membership.model.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { BaseModel, IntField, Model, OneToMany, EnumField, StringField } from 'warthog';
  2. import { Channel } from '../channel/channel.model';
  3. import { MembershipEntryMethod } from '../enums/enums';
  4. export { MembershipEntryMethod };
  5. @Model({ api: { description: `Stored information about a registered user` } })
  6. export class Membership extends BaseModel {
  7. @StringField({
  8. description: `The unique handle chosen by member`,
  9. unique: true,
  10. })
  11. handle!: string;
  12. @StringField({
  13. nullable: true,
  14. description: `A Url to member's Avatar image`,
  15. })
  16. avatarUri?: string;
  17. @StringField({
  18. nullable: true,
  19. description: `Short text chosen by member to share information about themselves`,
  20. })
  21. about?: string;
  22. @StringField({
  23. description: `Member's controller account id`,
  24. })
  25. controllerAccount!: string;
  26. @StringField({
  27. description: `Member's root account id`,
  28. })
  29. rootAccount!: string;
  30. @IntField({
  31. description: `Blocknumber when member was registered`,
  32. })
  33. createdInBlock!: number;
  34. @EnumField('MembershipEntryMethod', MembershipEntryMethod, {
  35. description: `How the member was registered`,
  36. })
  37. entry!: MembershipEntryMethod;
  38. @IntField({
  39. nullable: true,
  40. description: `The type of subscription the member has purchased if any.`,
  41. })
  42. subscription?: number;
  43. @OneToMany(() => Channel, (param: Channel) => param.ownerMember, { cascade: ["insert", "update"] })
  44. channels?: Channel[];
  45. constructor(init?: Partial<Membership>) {
  46. super();
  47. Object.assign(this, init);
  48. }
  49. }