auth checkpoint
auth dependecies not instaled in dev container
This commit is contained in:
1 parent
7378d37b36
commit
42002f8e6f
50 files changed
+3680
-636
No files matched your search
@@ -56,6 +56,17 @@ export enum VideoPosition {
|
||||
NONE = 'none',
|
||||
}
|
||||
|
||||
export enum UserRole {
|
||||
ADMIN = 'admin',
|
||||
CONTRIBUTOR = 'contributor',
|
||||
USER = 'user',
|
||||
}
|
||||
|
||||
export enum ReactionType {
|
||||
LIKE = 'like',
|
||||
DISLIKE = 'dislike',
|
||||
}
|
||||
|
||||
@Entity('authors')
|
||||
export class Author {
|
||||
@PrimaryGeneratedColumn('uuid')
|
||||
@@ -114,6 +125,36 @@ export class Category {
|
||||
parent: Category;
|
||||
}
|
||||
|
||||
@Entity('users')
|
||||
export class User {
|
||||
@PrimaryGeneratedColumn('uuid')
|
||||
id: string;
|
||||
|
||||
@Column({ unique: true })
|
||||
email: string;
|
||||
|
||||
@Column({ unique: true })
|
||||
username: string;
|
||||
|
||||
@Column()
|
||||
passwordHash: string;
|
||||
|
||||
@Column({
|
||||
type: 'text',
|
||||
default: 'user',
|
||||
})
|
||||
role: UserRole;
|
||||
|
||||
@Column({ default: true })
|
||||
isActive: boolean;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
@UpdateDateColumn()
|
||||
updatedAt: Date;
|
||||
}
|
||||
|
||||
@Entity('articles')
|
||||
export class Article {
|
||||
@PrimaryGeneratedColumn('uuid')
|
||||
@@ -196,6 +237,12 @@ export class Article {
|
||||
@ManyToOne(() => Category, { onDelete: 'SET NULL' })
|
||||
@JoinColumn({ name: 'categoryId' })
|
||||
category: Category;
|
||||
|
||||
@OneToMany(() => Comment, (comment) => comment.article)
|
||||
comments: Comment[];
|
||||
|
||||
@OneToMany(() => Reaction, (reaction) => reaction.article)
|
||||
reactions: Reaction[];
|
||||
}
|
||||
|
||||
@Entity('live_blogs')
|
||||
@@ -278,6 +325,12 @@ export class LiveBlog {
|
||||
cascade: true,
|
||||
})
|
||||
updates: LiveBlogUpdate[];
|
||||
|
||||
@OneToMany(() => Comment, (comment) => comment.liveBlog)
|
||||
comments: Comment[];
|
||||
|
||||
@OneToMany(() => Reaction, (reaction) => reaction.liveBlog)
|
||||
reactions: Reaction[];
|
||||
}
|
||||
|
||||
@Entity('live_blog_updates')
|
||||
@@ -314,3 +367,100 @@ export class LiveBlogUpdate {
|
||||
@JoinColumn({ name: 'liveBlogId' })
|
||||
liveBlog: LiveBlog;
|
||||
}
|
||||
|
||||
@Entity('comments')
|
||||
export class Comment {
|
||||
@PrimaryGeneratedColumn('uuid')
|
||||
id: string;
|
||||
|
||||
@Column('text')
|
||||
content: string;
|
||||
|
||||
@Column({ nullable: true })
|
||||
articleId: string;
|
||||
|
||||
@Column({ nullable: true })
|
||||
liveBlogId: string;
|
||||
|
||||
@Column({ nullable: true })
|
||||
parentId: string;
|
||||
|
||||
@Column()
|
||||
userId: string;
|
||||
|
||||
@Column({ default: 0 })
|
||||
likeCount: number;
|
||||
|
||||
@Column({ default: 0 })
|
||||
dislikeCount: number;
|
||||
|
||||
@Column({ default: true })
|
||||
isVisible: boolean;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
@UpdateDateColumn()
|
||||
updatedAt: Date;
|
||||
|
||||
@ManyToOne(() => Article, { onDelete: 'CASCADE' })
|
||||
@JoinColumn({ name: 'articleId' })
|
||||
article: Article;
|
||||
|
||||
@ManyToOne(() => LiveBlog, { onDelete: 'CASCADE' })
|
||||
@JoinColumn({ name: 'liveBlogId' })
|
||||
liveBlog: LiveBlog;
|
||||
|
||||
@ManyToOne(() => Comment, { onDelete: 'CASCADE' })
|
||||
@JoinColumn({ name: 'parentId' })
|
||||
parent: Comment;
|
||||
|
||||
@ManyToOne(() => User, { onDelete: 'CASCADE' })
|
||||
@JoinColumn({ name: 'userId' })
|
||||
user: User;
|
||||
|
||||
@OneToMany(() => Comment, (comment) => comment.parent)
|
||||
replies: Comment[];
|
||||
}
|
||||
|
||||
@Entity('reactions')
|
||||
export class Reaction {
|
||||
@PrimaryGeneratedColumn('uuid')
|
||||
id: string;
|
||||
|
||||
@Column({
|
||||
type: 'text',
|
||||
})
|
||||
type: ReactionType;
|
||||
|
||||
@Column({ nullable: true })
|
||||
articleId: string;
|
||||
|
||||
@Column({ nullable: true })
|
||||
liveBlogId: string;
|
||||
|
||||
@Column({ nullable: true })
|
||||
commentId: string;
|
||||
|
||||
@Column()
|
||||
userId: string;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
@ManyToOne(() => Article, { onDelete: 'CASCADE' })
|
||||
@JoinColumn({ name: 'articleId' })
|
||||
article: Article;
|
||||
|
||||
@ManyToOne(() => LiveBlog, { onDelete: 'CASCADE' })
|
||||
@JoinColumn({ name: 'liveBlogId' })
|
||||
liveBlog: LiveBlog;
|
||||
|
||||
@ManyToOne(() => Comment, { onDelete: 'CASCADE' })
|
||||
@JoinColumn({ name: 'commentId' })
|
||||
comment: Comment;
|
||||
|
||||
@ManyToOne(() => User, { onDelete: 'CASCADE' })
|
||||
@JoinColumn({ name: 'userId' })
|
||||
user: User;
|
||||
}
|
||||
Reference in new issue
Block a user