UNPKG

@wearesage/schema

Version:

A flexible schema definition and validation system for TypeScript with multi-database support

34 lines (29 loc) 772 B
import "reflect-metadata"; import { Entity, Id, Property, ManyToOne } from "../.."; import { User } from "./User"; import { Group } from "./Group"; /** * A pivot (linking) entity to connect a User to a Group. * This is often more flexible than a simple ManyToMany in some DB abstractions, * because you can store extra fields on the membership itself * (like "joinedAt", "roleInGroup", etc.). */ @Entity() export class GroupMembership { @Id() id: string; @Property({ default: () => new Date() }) joinedAt: Date; @ManyToOne({ target: () => User, inverse: "memberships", name: "MEMBERSHIP_FOR_USER", }) user: User; @ManyToOne({ target: () => Group, inverse: "memberships", name: "MEMBERSHIP_IN_GROUP", }) group: Group; }