Andreas Schaafsma c3a8469371 bla
2024-06-13 10:07:25 +02:00

93 lines
3.4 KiB
TypeScript

import { Association, BelongsToGetAssociationMixin, BelongsToManyAddAssociationMixin, BelongsToManyAssociation, BelongsToManyCreateAssociationMixin, BelongsToManyGetAssociationsMixin, BelongsToManyRemoveAssociationMixin, BelongsToManySetAssociationsMixin, CreationOptional, DataTypes, ForeignKey, InferAttributes, InferCreationAttributes, Model, NonAttribute, Sequelize } from "@sequelize/core";import { User } from "./User";
import { SqliteDialect } from '@sequelize/sqlite3';
import { Attribute, AutoIncrement, BelongsTo, BelongsToMany, CreatedAt, Default, HasMany, NotNull, PrimaryKey, Unique, UpdatedAt } from "@sequelize/core/decorators-legacy";
import { Tag } from "./Tag";
import { PostTag } from "./PostTag";
import { Project } from "./Project";
import { Attachment } from "./Attachment";
import { Bucket } from "./Bucket";
import { UUID } from "crypto";
export class Post extends Model<InferAttributes<Post>, InferCreationAttributes<Post>> {
// Attributes
@Attribute(DataTypes.INTEGER)
@PrimaryKey
@AutoIncrement
@Unique
declare id: CreationOptional<number>;
@Attribute(DataTypes.STRING)
declare title:string
@Attribute(DataTypes.STRING)
declare content:string
// Date thingies
@CreatedAt
declare createdAt: CreationOptional<Date>;
@UpdatedAt
declare updatedAt: CreationOptional<Date>;
// Associatoins
@Attribute(DataTypes.INTEGER)
@NotNull
declare user_id:ForeignKey<User['id']>;
@Attribute(DataTypes.INTEGER)
declare project_id:CreationOptional<ForeignKey<User['id']>>;
@BelongsTo(()=>User, { foreignKey: 'user_id', inverse: { type: 'hasMany', as: 'posts' } })
declare user:NonAttribute<User>;
@BelongsTo(()=>Project, { foreignKey:'project_id', inverse: { type: 'hasMany', as: 'posts' } })
declare project:CreationOptional<Project>;
@BelongsToMany(()=>Tag, { through: { model: ()=>PostTag, unique: false}, inverse: {as: 'taggedPosts'} })
declare postTags?:NonAttribute<Tag[]>;
@BelongsToMany(()=>Bucket,{through: {model:'PostBucket'}, throughAssociations: {
fromSource: 'postBucketBuckets',
toSource: 'post',
fromTarget: 'postBucketPosts',
toTarget: 'PostBucket',
}, inverse:{as: 'posts'}, foreignKey: 'postId', otherKey: 'bucketId'})
declare buckets?:NonAttribute<Bucket[]>;
declare static associations: {
user: Association<User, Post>;
project: Association<Project, Post>;
postBuckets: Association<Bucket, Post>
postTags: Association<Tag, Post>;
};
declare getUser: BelongsToGetAssociationMixin<User>;
declare getBuckets: BelongsToManyGetAssociationsMixin<Bucket>;
declare setBuckets: BelongsToManySetAssociationsMixin<Bucket,Bucket['id']>;
declare addBucket: BelongsToManyAddAssociationMixin<Bucket,Bucket['id']>;
declare addBuckets: BelongsToManyAddAssociationMixin<Bucket,Bucket['id']>;
declare removeBucket: BelongsToManyRemoveAssociationMixin<Bucket,Bucket['id']>;
declare removeBuckets: BelongsToManyRemoveAssociationMixin<Bucket,Bucket['id']>;
declare createBucket: BelongsToManyCreateAssociationMixin<Bucket>;
}
export class PostBucket extends Model<InferAttributes<PostBucket>, InferCreationAttributes<PostBucket>> {
declare postId: number;
declare bucketId: UUID;
declare post?:NonAttribute<Post>
declare bucket?:NonAttribute<Bucket>
}