@wearesage/schema
Version:
A flexible schema definition and validation system for TypeScript with multi-database support
65 lines (56 loc) • 1.49 kB
text/typescript
import "reflect-metadata";
import { Entity, Id, Property, OneToMany, ManyToMany } from "../..";
import { Role } from "./Role";
import { GroupMembership } from "./GroupMembership";
import { Resource } from "./Resource";
/**
* A User can belong to many Groups (through GroupMembership),
* can have many Roles,
* can own or manage certain Resources.
*/
export class User {
id: string;
name: string;
email: string;
createdAt: Date;
updatedAt: Date;
/**
* A user can have multiple roles (Many-to-Many).
* The "inverse" property on Role is "users".
*/
roles: Role[] = [];
/**
* A user can be a member of multiple groups,
* but we handle that via the GroupMembership entity
* (see Group.memberships).
* If you want direct access to memberships,
* you can define a OneToMany relationship:
*/
memberships: GroupMembership[] = [];
/**
* A user can own many resources, e.g. "created" or "manages" them.
* The "inverse" property on Resource is "owner".
*/
ownedResources: Resource[] = [];
}