basic structure setup

This commit is contained in:
dimitar committed 2026-01-10 19:41:04 +01:00
commit 71dfd86187
89 files changed
+41490

No files matched your search

+129
View File
@@ -0,0 +1,129 @@
import {
Entity,
PrimaryGeneratedColumn,
Column,
CreateDateColumn,
UpdateDateColumn,
ManyToOne,
JoinColumn,
} from 'typeorm';
export enum ArticleStatus {
DRAFT = 'draft',
PUBLISHED = 'published',
ARCHIVED = 'archived',
}
@Entity('authors')
export class Author {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
name: string;
@Column({ unique: true })
slug: string;
@Column({ nullable: true })
bio: string;
@Column({ nullable: true })
avatar: string;
@Column({ default: false })
isActive: boolean;
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
updatedAt: Date;
}
@Entity('categories')
export class Category {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
name: string;
@Column({ unique: true })
slug: string;
@Column({ nullable: true })
description: string;
@Column({ nullable: true })
parentId: string;
@Column({ default: 0 })
order: number;
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
updatedAt: Date;
@ManyToOne(() => Category, { onDelete: 'SET NULL' })
@JoinColumn({ name: 'parentId' })
parent: Category;
}
@Entity('articles')
export class Article {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
title: string;
@Column('text')
content: string;
@Column({ type: 'text', nullable: true })
excerpt: string;
@Column({ default: '' })
slug: string;
@Column({ default: '' })
featuredImage: string;
@Column({ type: 'text', default: '[]' })
tags: string[];
@Column({
type: 'text',
default: 'draft',
})
status: ArticleStatus;
@Column({ default: 0 })
views: number;
@Column({ nullable: true })
strapiId: string;
@Column({ nullable: true })
authorId: string;
@Column({ nullable: true })
categoryId: string;
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
updatedAt: Date;
@ManyToOne(() => Author, { onDelete: 'SET NULL' })
@JoinColumn({ name: 'authorId' })
author: Author;
@ManyToOne(() => Category, { onDelete: 'SET NULL' })
@JoinColumn({ name: 'categoryId' })
category: Category;
}