export class PermissionData { private constructor( public readonly id: string, public code: string, public name: string, public description: string, public createdAt: Date, public updatedAt: Date, ) {} changeName(name: string) { this.name = name; } changeDescription(description: string) { this.description = description; } changeCode(code: string) { this.code = code; } static restore(props: { id: string; code?: string; name: string; description: string; createdAt: Date; updatedAt: Date; }) { return new PermissionData( props.id, props.code || props.name, props.name, props.description, props.createdAt, props.updatedAt, ); } }