251205:0000 Just start debug backend/frontend

This commit is contained in:
2025-12-05 00:32:02 +07:00
parent dc8b80c5f9
commit 2865bebdb1
88 changed files with 6751 additions and 1016 deletions

View File

@@ -0,0 +1,45 @@
import {
Entity,
Column,
PrimaryGeneratedColumn,
ManyToMany,
JoinTable,
} from 'typeorm';
@Entity('permissions')
export class Permission {
@PrimaryGeneratedColumn()
id!: number;
@Column({ name: 'permission_code', length: 50, unique: true })
permissionCode!: string;
@Column({ name: 'description', type: 'text', nullable: true })
description!: string;
@Column({ name: 'resource', length: 50 })
resource!: string;
@Column({ name: 'action', length: 50 })
action!: string;
}
@Entity('roles')
export class Role {
@PrimaryGeneratedColumn()
id!: number;
@Column({ name: 'role_name', length: 50, unique: true })
roleName!: string;
@Column({ name: 'description', type: 'text', nullable: true })
description!: string;
@ManyToMany(() => Permission)
@JoinTable({
name: 'role_permissions',
joinColumn: { name: 'role_id', referencedColumnName: 'id' },
inverseJoinColumn: { name: 'permission_id', referencedColumnName: 'id' },
})
permissions!: Permission[];
}

View File

@@ -0,0 +1,36 @@
import { Entity, Column, PrimaryGeneratedColumn, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn } from 'typeorm';
import { User } from '../../users/entities/user.entity';
@Entity('correspondences')
export class Correspondence {
@PrimaryGeneratedColumn()
id!: number;
@Column({ name: 'document_number', length: 50, unique: true })
documentNumber!: string;
@Column({ length: 255 })
subject!: string;
@Column({ type: 'text', nullable: true })
body!: string;
@Column({ length: 50 })
type!: string;
@Column({ length: 50, default: 'Draft' })
status!: string;
@Column({ name: 'created_by_id' })
createdById!: number;
@ManyToOne(() => User)
@JoinColumn({ name: 'created_by_id' })
createdBy!: User;
@CreateDateColumn({ name: 'created_at' })
createdAt!: Date;
@UpdateDateColumn({ name: 'updated_at' })
updatedAt!: Date;
}

View File

@@ -0,0 +1,44 @@
import {
Entity,
Column,
PrimaryGeneratedColumn,
CreateDateColumn,
UpdateDateColumn,
ManyToOne,
JoinColumn,
} from 'typeorm';
import { User } from '../../users/entities/user.entity';
@Entity('drawings')
export class Drawing {
@PrimaryGeneratedColumn()
id!: number;
@Column({ name: 'drawing_number', length: 50, unique: true })
drawingNumber!: string;
@Column({ length: 255 })
title!: string;
@Column({ name: 'drawing_type', length: 50 })
drawingType!: string;
@Column({ length: 10 })
revision!: string;
@Column({ length: 50, default: 'Draft' })
status!: string;
@Column({ name: 'uploaded_by_id' })
uploadedById!: number;
@ManyToOne(() => User)
@JoinColumn({ name: 'uploaded_by_id' })
uploadedBy!: User;
@CreateDateColumn({ name: 'created_at' })
createdAt!: Date;
@UpdateDateColumn({ name: 'updated_at' })
updatedAt!: Date;
}

View File

@@ -0,0 +1,34 @@
import {
Entity,
Column,
PrimaryGeneratedColumn,
CreateDateColumn,
UpdateDateColumn,
DeleteDateColumn,
Index,
} from 'typeorm';
@Entity('organizations')
export class Organization {
@PrimaryGeneratedColumn()
id!: number;
@Column({ name: 'organization_code', length: 20, unique: true })
@Index('idx_org_code')
organizationCode!: string;
@Column({ name: 'organization_name', length: 200 })
organizationName!: string;
@Column({ name: 'is_active', default: true })
isActive!: boolean;
@CreateDateColumn({ name: 'created_at' })
createdAt!: Date;
@UpdateDateColumn({ name: 'updated_at' })
updatedAt!: Date;
@DeleteDateColumn({ name: 'deleted_at' })
deletedAt!: Date;
}

View File

@@ -0,0 +1,41 @@
import {
Entity,
Column,
PrimaryGeneratedColumn,
CreateDateColumn,
UpdateDateColumn,
ManyToOne,
JoinColumn,
} from 'typeorm';
import { User } from '../../users/entities/user.entity';
@Entity('rfas')
export class Rfa {
@PrimaryGeneratedColumn()
id!: number;
@Column({ name: 'rfa_number', length: 50, unique: true })
rfaNumber!: string;
@Column({ length: 255 })
title!: string;
@Column({ name: 'discipline_code', length: 20, nullable: true })
disciplineCode!: string;
@Column({ length: 50, default: 'Draft' })
status!: string;
@Column({ name: 'created_by_id' })
createdById!: number;
@ManyToOne(() => User)
@JoinColumn({ name: 'created_by_id' })
createdBy!: User;
@CreateDateColumn({ name: 'created_at' })
createdAt!: Date;
@UpdateDateColumn({ name: 'updated_at' })
updatedAt!: Date;
}

View File

@@ -0,0 +1,52 @@
import {
Entity,
Column,
PrimaryGeneratedColumn,
CreateDateColumn,
UpdateDateColumn,
DeleteDateColumn,
ManyToMany,
JoinTable,
} from 'typeorm';
import { Role } from '../../auth/entities/role.entity';
@Entity('users')
export class User {
@PrimaryGeneratedColumn()
id!: number;
@Column({ length: 50, unique: true })
username!: string;
@Column({ length: 100, unique: true })
email!: string;
@Column({ name: 'password_hash', length: 255 })
passwordHash!: string;
@Column({ name: 'first_name', length: 100 })
firstName!: string;
@Column({ name: 'last_name', length: 100 })
lastName!: string;
@Column({ name: 'is_active', default: true })
isActive!: boolean;
@ManyToMany(() => Role)
@JoinTable({
name: 'user_roles',
joinColumn: { name: 'user_id', referencedColumnName: 'id' },
inverseJoinColumn: { name: 'role_id', referencedColumnName: 'id' },
})
roles!: Role[];
@CreateDateColumn({ name: 'created_at' })
createdAt!: Date;
@UpdateDateColumn({ name: 'updated_at' })
updatedAt!: Date;
@DeleteDateColumn({ name: 'deleted_at' })
deletedAt!: Date;
}