/
viktorphp
/
back-socket
Обзор
Документация
Войти
/
viktorphp
/
back-socket
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/entities/diary/diary-entry.entity.ts
70 строк
2 KB
Иванов Виктор Евгеньевич
feature-diary: добавить функционал дневника
11 апр 2026, 11:13
11 апр 2026, 11:13
8167a94
Код
Авторство
О чём код?
import { Entity, Column, PrimaryGeneratedColumn, ManyToOne, OneToMany, CreateDateColumn, UpdateDateColumn, JoinColumn, Relation, } from 'typeorm'; import { User } from '../users/user.entity'; import { DiaryFile } from './diary-file.entity'; /** * Сущность записи дневника. * Одна запись привязана к конкретному пользователю и дате. * На одну дату может быть несколько записей — они различаются по createdAt. */ @Entity() export class DiaryEntry { @PrimaryGeneratedColumn('uuid') id: string; /** * Пользователь, которому принадлежит запись. * Связь ManyToOne: много записей — один пользователь. * onDelete: 'CASCADE' — при удалении пользователя удаляются все его записи. */ @ManyToOne(() => User, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'userId' }) user: User; @Column() userId: string; /** * Дата записи — выбирается пользователем на фронте. * Тип 'date' хранит только дату без времени (YYYY-MM-DD). * Отдельно от createdAt, чтобы пользователь мог делать запись "задним числом". */ @Column({ type: 'date' }) date: string; /** * Текстовое содержимое записи дневника. * Тип 'text' позволяет хранить длинные строки без ограничения длины. */ @Column({ type: 'text', nullable: true }) text: string; /** * Список файлов, прикреплённых к этой записи. * Связь OneToMany: у одной записи много файлов. * eager: true — файлы загружаются автоматически вместе с записью. */ @OneToMany(() => DiaryFile, (file) => file.entry, { eager: true, cascade: true, }) files: Relation<DiaryFile[]>; /** Время создания записи — проставляется автоматически при INSERT */ @CreateDateColumn() createdAt: Date; /** Время последнего изменения — обновляется автоматически при UPDATE */ @UpdateDateColumn() updatedAt: Date; }