localhost_oa_based/src/common/entity/common.entity.ts

56 lines
1.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { ApiHideProperty, ApiProperty } from '@nestjs/swagger';
import { Exclude } from 'class-transformer';
import {
BaseEntity,
Column,
CreateDateColumn,
PrimaryGeneratedColumn,
UpdateDateColumn,
VirtualColumn
} from 'typeorm';
// 如果觉得前端转换时间太麻烦并且不考虑通用性的话可以在服务端进行转换eg: @UpdateDateColumn({ name: 'updated_at', transformer })
// const transformer: ValueTransformer = {
// to(value) {
// return value
// },
// from(value) {
// return dayjs(value).format('YYYY-MM-DD HH:mm:ss')
// },
// }
export abstract class CommonEntity extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
@UpdateDateColumn({ name: 'updated_at' })
updatedAt: Date;
}
export abstract class CompleteEntity extends CommonEntity {
@ApiHideProperty()
@Exclude()
@Column({ name: 'create_by', update: false, comment: '创建者' })
createBy: number;
@ApiHideProperty()
@Exclude()
@Column({ name: 'update_by', comment: '更新者' })
updateBy: number;
/**
* 不会保存到数据库中的虚拟列,数据量大时可能会有性能问题,有性能要求请考虑在 service 层手动实现
* @see https://typeorm.io/decorator-reference#virtualcolumn
*/
@ApiProperty({ description: '创建者' })
@VirtualColumn({ query: alias => `SELECT username FROM sys_user WHERE id = ${alias}.create_by` })
creator: string;
@ApiProperty({ description: '更新者' })
@VirtualColumn({ query: alias => `SELECT username FROM sys_user WHERE id = ${alias}.update_by` })
updater: string;
}