Files
doneit-web/src/app/utils/entity.ts
T
Peter Maquiran d6a08c6264 set bold
2024-08-30 12:41:50 +01:00

35 lines
547 B
TypeScript

import { v4 as uuidv4 } from 'uuid';
import { ZodSchema, ZodType } from 'zod';
// export interface IEntity {
// id: string;
// createdAt: Date;
// updatedAt: Date;
// deletedAt?: Date;
// }
export const BaseEntity = <T>(schema: ZodSchema) => {
abstract class Entity {
readonly id: string;
readonly createdAt: Date;
readonly updatedAt: Date;
deletedAt?: Date;
static nameOf = (name: keyof T) => name;
validate<T>(entity: T): ZodType {
return schema.parse(entity);
}
}
return Entity;
};