@stamhoofd/models 2.63.0 → 2.65.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/dist/src/helpers/EmailBuilder.d.ts +6 -1
  2. package/dist/src/helpers/EmailBuilder.d.ts.map +1 -1
  3. package/dist/src/helpers/EmailBuilder.js +60 -20
  4. package/dist/src/helpers/EmailBuilder.js.map +1 -1
  5. package/dist/src/helpers/MemberMerger.d.ts.map +1 -1
  6. package/dist/src/helpers/MemberMerger.js +1 -2
  7. package/dist/src/helpers/MemberMerger.js.map +1 -1
  8. package/dist/src/migrations/1605262045-import-postcodes.d.ts +3 -3
  9. package/dist/src/migrations/1605262045-import-postcodes.js +10 -13
  10. package/dist/src/migrations/1734429094-registration-trial-until.sql +3 -0
  11. package/dist/src/migrations/1734429095-membership-trial-until.sql +2 -0
  12. package/dist/src/migrations/1734535120-registration-period-previous-period-id.sql +3 -0
  13. package/dist/src/migrations/1734535121-platform-previous-period-id.sql +3 -0
  14. package/dist/src/migrations/1734626607-cached-balance-amount-open.sql +2 -0
  15. package/dist/src/migrations/1734698906-cached-balance-amount-paid.sql +2 -0
  16. package/dist/src/migrations/1735573520-emails-email-type.sql +2 -0
  17. package/dist/src/migrations/1735573521-email-recipients-email-type.sql +4 -0
  18. package/dist/src/migrations/1735573522-emails-indexes.sql +3 -0
  19. package/dist/src/migrations/1735982691-cached-balance-email-reminder-counts.sql +4 -0
  20. package/dist/src/migrations/1735994471-default-email-templates.sql +5 -0
  21. package/dist/src/models/AuditLog.d.ts +2 -7
  22. package/dist/src/models/AuditLog.d.ts.map +1 -1
  23. package/dist/src/models/AuditLog.js +1 -15
  24. package/dist/src/models/AuditLog.js.map +1 -1
  25. package/dist/src/models/BalanceItem.d.ts +4 -13
  26. package/dist/src/models/BalanceItem.d.ts.map +1 -1
  27. package/dist/src/models/BalanceItem.js +21 -33
  28. package/dist/src/models/BalanceItem.js.map +1 -1
  29. package/dist/src/models/BalanceItemPayment.d.ts +3 -2
  30. package/dist/src/models/BalanceItemPayment.d.ts.map +1 -1
  31. package/dist/src/models/BalanceItemPayment.js +2 -1
  32. package/dist/src/models/BalanceItemPayment.js.map +1 -1
  33. package/dist/src/models/BuckarooPayment.d.ts +2 -2
  34. package/dist/src/models/BuckarooPayment.d.ts.map +1 -1
  35. package/dist/src/models/BuckarooPayment.js +2 -1
  36. package/dist/src/models/BuckarooPayment.js.map +1 -1
  37. package/dist/src/models/CachedBalance.d.ts +12 -10
  38. package/dist/src/models/CachedBalance.d.ts.map +1 -1
  39. package/dist/src/models/CachedBalance.js +122 -39
  40. package/dist/src/models/CachedBalance.js.map +1 -1
  41. package/dist/src/models/Document.d.ts +3 -3
  42. package/dist/src/models/Document.d.ts.map +1 -1
  43. package/dist/src/models/Document.js +2 -1
  44. package/dist/src/models/Document.js.map +1 -1
  45. package/dist/src/models/DocumentTemplate.d.ts +2 -2
  46. package/dist/src/models/DocumentTemplate.d.ts.map +1 -1
  47. package/dist/src/models/DocumentTemplate.js +38 -10
  48. package/dist/src/models/DocumentTemplate.js.map +1 -1
  49. package/dist/src/models/Email.d.ts +10 -4
  50. package/dist/src/models/Email.d.ts.map +1 -1
  51. package/dist/src/models/Email.js +68 -25
  52. package/dist/src/models/Email.js.map +1 -1
  53. package/dist/src/models/EmailRecipient.d.ts +14 -8
  54. package/dist/src/models/EmailRecipient.d.ts.map +1 -1
  55. package/dist/src/models/EmailRecipient.js +19 -14
  56. package/dist/src/models/EmailRecipient.js.map +1 -1
  57. package/dist/src/models/EmailTemplate.d.ts +2 -7
  58. package/dist/src/models/EmailTemplate.d.ts.map +1 -1
  59. package/dist/src/models/EmailTemplate.js +1 -15
  60. package/dist/src/models/EmailTemplate.js.map +1 -1
  61. package/dist/src/models/EmailVerificationCode.d.ts +2 -2
  62. package/dist/src/models/EmailVerificationCode.d.ts.map +1 -1
  63. package/dist/src/models/EmailVerificationCode.js +2 -1
  64. package/dist/src/models/EmailVerificationCode.js.map +1 -1
  65. package/dist/src/models/Event.d.ts +2 -2
  66. package/dist/src/models/Event.d.ts.map +1 -1
  67. package/dist/src/models/Event.js +2 -1
  68. package/dist/src/models/Event.js.map +1 -1
  69. package/dist/src/models/Group.d.ts +2 -7
  70. package/dist/src/models/Group.d.ts.map +1 -1
  71. package/dist/src/models/Group.js +1 -17
  72. package/dist/src/models/Group.js.map +1 -1
  73. package/dist/src/models/Image.d.ts +2 -2
  74. package/dist/src/models/Image.d.ts.map +1 -1
  75. package/dist/src/models/Image.js +2 -1
  76. package/dist/src/models/Image.js.map +1 -1
  77. package/dist/src/models/Member.d.ts +6 -9
  78. package/dist/src/models/Member.d.ts.map +1 -1
  79. package/dist/src/models/Member.js +3 -42
  80. package/dist/src/models/Member.js.map +1 -1
  81. package/dist/src/models/MemberPlatformMembership.d.ts +12 -8
  82. package/dist/src/models/MemberPlatformMembership.d.ts.map +1 -1
  83. package/dist/src/models/MemberPlatformMembership.js +80 -20
  84. package/dist/src/models/MemberPlatformMembership.js.map +1 -1
  85. package/dist/src/models/MemberResponsibilityRecord.d.ts +2 -7
  86. package/dist/src/models/MemberResponsibilityRecord.d.ts.map +1 -1
  87. package/dist/src/models/MemberResponsibilityRecord.js +1 -15
  88. package/dist/src/models/MemberResponsibilityRecord.js.map +1 -1
  89. package/dist/src/models/MemberUser.d.ts +8 -0
  90. package/dist/src/models/MemberUser.d.ts.map +1 -0
  91. package/dist/src/models/MemberUser.js +26 -0
  92. package/dist/src/models/MemberUser.js.map +1 -0
  93. package/dist/src/models/MergedMember.d.ts +3 -3
  94. package/dist/src/models/MergedMember.d.ts.map +1 -1
  95. package/dist/src/models/MergedMember.js +3 -2
  96. package/dist/src/models/MergedMember.js.map +1 -1
  97. package/dist/src/models/MolliePayment.d.ts +2 -2
  98. package/dist/src/models/MolliePayment.d.ts.map +1 -1
  99. package/dist/src/models/MolliePayment.js +2 -1
  100. package/dist/src/models/MolliePayment.js.map +1 -1
  101. package/dist/src/models/MollieToken.d.ts +2 -2
  102. package/dist/src/models/MollieToken.d.ts.map +1 -1
  103. package/dist/src/models/MollieToken.js +2 -1
  104. package/dist/src/models/MollieToken.js.map +1 -1
  105. package/dist/src/models/OneTimeToken.d.ts +2 -2
  106. package/dist/src/models/OneTimeToken.d.ts.map +1 -1
  107. package/dist/src/models/OneTimeToken.js +2 -1
  108. package/dist/src/models/OneTimeToken.js.map +1 -1
  109. package/dist/src/models/Order.d.ts +3 -2
  110. package/dist/src/models/Order.d.ts.map +1 -1
  111. package/dist/src/models/Order.js +2 -1
  112. package/dist/src/models/Order.js.map +1 -1
  113. package/dist/src/models/Organization.d.ts +2 -2
  114. package/dist/src/models/Organization.d.ts.map +1 -1
  115. package/dist/src/models/Organization.js +2 -1
  116. package/dist/src/models/Organization.js.map +1 -1
  117. package/dist/src/models/OrganizationRegistrationPeriod.d.ts +2 -2
  118. package/dist/src/models/OrganizationRegistrationPeriod.d.ts.map +1 -1
  119. package/dist/src/models/OrganizationRegistrationPeriod.js +2 -1
  120. package/dist/src/models/OrganizationRegistrationPeriod.js.map +1 -1
  121. package/dist/src/models/PasswordToken.d.ts +3 -2
  122. package/dist/src/models/PasswordToken.d.ts.map +1 -1
  123. package/dist/src/models/PasswordToken.js +2 -1
  124. package/dist/src/models/PasswordToken.js.map +1 -1
  125. package/dist/src/models/PayconiqPayment.d.ts +2 -2
  126. package/dist/src/models/PayconiqPayment.d.ts.map +1 -1
  127. package/dist/src/models/PayconiqPayment.js +2 -1
  128. package/dist/src/models/PayconiqPayment.js.map +1 -1
  129. package/dist/src/models/Payment.d.ts +2 -7
  130. package/dist/src/models/Payment.d.ts.map +1 -1
  131. package/dist/src/models/Payment.js +1 -15
  132. package/dist/src/models/Payment.js.map +1 -1
  133. package/dist/src/models/Platform.d.ts +5 -3
  134. package/dist/src/models/Platform.d.ts.map +1 -1
  135. package/dist/src/models/Platform.js +11 -2
  136. package/dist/src/models/Platform.js.map +1 -1
  137. package/dist/src/models/RegisterCode.d.ts +2 -2
  138. package/dist/src/models/RegisterCode.d.ts.map +1 -1
  139. package/dist/src/models/RegisterCode.js +2 -1
  140. package/dist/src/models/RegisterCode.js.map +1 -1
  141. package/dist/src/models/Registration.d.ts +20 -7
  142. package/dist/src/models/Registration.d.ts.map +1 -1
  143. package/dist/src/models/Registration.js +25 -61
  144. package/dist/src/models/Registration.js.map +1 -1
  145. package/dist/src/models/RegistrationPeriod.d.ts +4 -2
  146. package/dist/src/models/RegistrationPeriod.d.ts.map +1 -1
  147. package/dist/src/models/RegistrationPeriod.js +23 -1
  148. package/dist/src/models/RegistrationPeriod.js.map +1 -1
  149. package/dist/src/models/STCredit.d.ts +2 -2
  150. package/dist/src/models/STCredit.d.ts.map +1 -1
  151. package/dist/src/models/STCredit.js +2 -1
  152. package/dist/src/models/STCredit.js.map +1 -1
  153. package/dist/src/models/STInvoice.d.ts +3 -2
  154. package/dist/src/models/STInvoice.d.ts.map +1 -1
  155. package/dist/src/models/STInvoice.js +2 -1
  156. package/dist/src/models/STInvoice.js.map +1 -1
  157. package/dist/src/models/STPackage.d.ts +2 -2
  158. package/dist/src/models/STPackage.d.ts.map +1 -1
  159. package/dist/src/models/STPackage.js +2 -1
  160. package/dist/src/models/STPackage.js.map +1 -1
  161. package/dist/src/models/STPendingInvoice.d.ts +3 -2
  162. package/dist/src/models/STPendingInvoice.d.ts.map +1 -1
  163. package/dist/src/models/STPendingInvoice.js +2 -1
  164. package/dist/src/models/STPendingInvoice.js.map +1 -1
  165. package/dist/src/models/StripeAccount.d.ts +2 -2
  166. package/dist/src/models/StripeAccount.d.ts.map +1 -1
  167. package/dist/src/models/StripeAccount.js +2 -1
  168. package/dist/src/models/StripeAccount.js.map +1 -1
  169. package/dist/src/models/StripeCheckoutSession.d.ts +2 -2
  170. package/dist/src/models/StripeCheckoutSession.d.ts.map +1 -1
  171. package/dist/src/models/StripeCheckoutSession.js +2 -1
  172. package/dist/src/models/StripeCheckoutSession.js.map +1 -1
  173. package/dist/src/models/StripePaymentIntent.d.ts +2 -2
  174. package/dist/src/models/StripePaymentIntent.d.ts.map +1 -1
  175. package/dist/src/models/StripePaymentIntent.js +2 -1
  176. package/dist/src/models/StripePaymentIntent.js.map +1 -1
  177. package/dist/src/models/Ticket.d.ts +3 -2
  178. package/dist/src/models/Ticket.d.ts.map +1 -1
  179. package/dist/src/models/Ticket.js +2 -1
  180. package/dist/src/models/Ticket.js.map +1 -1
  181. package/dist/src/models/Token.d.ts +3 -2
  182. package/dist/src/models/Token.d.ts.map +1 -1
  183. package/dist/src/models/Token.js +2 -1
  184. package/dist/src/models/Token.js.map +1 -1
  185. package/dist/src/models/UsedRegisterCode.d.ts +2 -2
  186. package/dist/src/models/UsedRegisterCode.d.ts.map +1 -1
  187. package/dist/src/models/UsedRegisterCode.js +2 -1
  188. package/dist/src/models/UsedRegisterCode.js.map +1 -1
  189. package/dist/src/models/User.d.ts +7 -2
  190. package/dist/src/models/User.d.ts.map +1 -1
  191. package/dist/src/models/User.js +27 -4
  192. package/dist/src/models/User.js.map +1 -1
  193. package/dist/src/models/UserPermissions.d.ts +3 -2
  194. package/dist/src/models/UserPermissions.d.ts.map +1 -1
  195. package/dist/src/models/UserPermissions.js +2 -1
  196. package/dist/src/models/UserPermissions.js.map +1 -1
  197. package/dist/src/models/Webshop.d.ts +3 -2
  198. package/dist/src/models/Webshop.d.ts.map +1 -1
  199. package/dist/src/models/Webshop.js +2 -1
  200. package/dist/src/models/Webshop.js.map +1 -1
  201. package/dist/src/models/WebshopDiscountCode.d.ts +2 -2
  202. package/dist/src/models/WebshopDiscountCode.d.ts.map +1 -1
  203. package/dist/src/models/WebshopDiscountCode.js +2 -1
  204. package/dist/src/models/WebshopDiscountCode.js.map +1 -1
  205. package/dist/src/models/addresses/City.d.ts +3 -2
  206. package/dist/src/models/addresses/City.d.ts.map +1 -1
  207. package/dist/src/models/addresses/City.js +2 -1
  208. package/dist/src/models/addresses/City.js.map +1 -1
  209. package/dist/src/models/addresses/PostalCode.d.ts +3 -2
  210. package/dist/src/models/addresses/PostalCode.d.ts.map +1 -1
  211. package/dist/src/models/addresses/PostalCode.js +2 -1
  212. package/dist/src/models/addresses/PostalCode.js.map +1 -1
  213. package/dist/src/models/addresses/Province.d.ts +2 -2
  214. package/dist/src/models/addresses/Province.d.ts.map +1 -1
  215. package/dist/src/models/addresses/Province.js +2 -1
  216. package/dist/src/models/addresses/Province.js.map +1 -1
  217. package/dist/src/models/addresses/Street.d.ts +3 -2
  218. package/dist/src/models/addresses/Street.d.ts.map +1 -1
  219. package/dist/src/models/addresses/Street.js +2 -1
  220. package/dist/src/models/addresses/Street.js.map +1 -1
  221. package/dist/src/models/index.d.ts +1 -0
  222. package/dist/src/models/index.d.ts.map +1 -1
  223. package/dist/src/models/index.js +1 -0
  224. package/dist/src/models/index.js.map +1 -1
  225. package/dist/tsconfig.tsbuildinfo +1 -1
  226. package/package.json +2 -2
  227. package/src/helpers/EmailBuilder.ts +82 -27
  228. package/src/helpers/MemberMerger.ts +2 -3
  229. package/src/migrations/1605262045-import-postcodes.ts +6 -9
  230. package/src/migrations/1734429094-registration-trial-until.sql +3 -0
  231. package/src/migrations/1734429095-membership-trial-until.sql +2 -0
  232. package/src/migrations/1734535120-registration-period-previous-period-id.sql +3 -0
  233. package/src/migrations/1734535121-platform-previous-period-id.sql +3 -0
  234. package/src/migrations/1734626607-cached-balance-amount-open.sql +2 -0
  235. package/src/migrations/1734698906-cached-balance-amount-paid.sql +2 -0
  236. package/src/migrations/1735573520-emails-email-type.sql +2 -0
  237. package/src/migrations/1735573521-email-recipients-email-type.sql +4 -0
  238. package/src/migrations/1735573522-emails-indexes.sql +3 -0
  239. package/src/migrations/1735982691-cached-balance-email-reminder-counts.sql +4 -0
  240. package/src/migrations/1735994471-default-email-templates.sql +5 -0
  241. package/src/models/AuditLog.ts +3 -21
  242. package/src/models/BalanceItem.ts +30 -46
  243. package/src/models/BalanceItemPayment.ts +3 -2
  244. package/src/models/BuckarooPayment.ts +3 -2
  245. package/src/models/CachedBalance.ts +166 -46
  246. package/src/models/Document.ts +4 -3
  247. package/src/models/DocumentTemplate.ts +43 -12
  248. package/src/models/Email.ts +80 -32
  249. package/src/models/EmailRecipient.ts +20 -20
  250. package/src/models/EmailTemplate.ts +3 -21
  251. package/src/models/EmailVerificationCode.ts +3 -2
  252. package/src/models/Event.ts +3 -2
  253. package/src/models/Group.ts +4 -23
  254. package/src/models/Image.ts +3 -2
  255. package/src/models/Member.ts +6 -52
  256. package/src/models/MemberPlatformMembership.ts +95 -26
  257. package/src/models/MemberResponsibilityRecord.ts +3 -21
  258. package/src/models/MemberUser.ts +18 -0
  259. package/src/models/MergedMember.ts +4 -3
  260. package/src/models/MolliePayment.ts +3 -2
  261. package/src/models/MollieToken.ts +3 -2
  262. package/src/models/OneTimeToken.ts +3 -2
  263. package/src/models/Order.ts +3 -2
  264. package/src/models/Organization.ts +3 -2
  265. package/src/models/OrganizationRegistrationPeriod.ts +3 -2
  266. package/src/models/PasswordToken.ts +3 -2
  267. package/src/models/PayconiqPayment.ts +3 -2
  268. package/src/models/Payment.ts +3 -21
  269. package/src/models/Platform.ts +13 -4
  270. package/src/models/RegisterCode.ts +3 -2
  271. package/src/models/Registration.ts +24 -68
  272. package/src/models/RegistrationPeriod.ts +30 -3
  273. package/src/models/STCredit.ts +3 -2
  274. package/src/models/STInvoice.ts +3 -2
  275. package/src/models/STPackage.ts +3 -2
  276. package/src/models/STPendingInvoice.ts +3 -2
  277. package/src/models/StripeAccount.ts +3 -2
  278. package/src/models/StripeCheckoutSession.ts +3 -2
  279. package/src/models/StripePaymentIntent.ts +3 -2
  280. package/src/models/Ticket.ts +3 -2
  281. package/src/models/Token.ts +3 -2
  282. package/src/models/UsedRegisterCode.ts +3 -2
  283. package/src/models/User.ts +31 -3
  284. package/src/models/UserPermissions.ts +3 -2
  285. package/src/models/Webshop.ts +3 -2
  286. package/src/models/WebshopDiscountCode.ts +3 -2
  287. package/src/models/addresses/City.ts +3 -2
  288. package/src/models/addresses/PostalCode.ts +3 -2
  289. package/src/models/addresses/Province.ts +3 -2
  290. package/src/models/addresses/Street.ts +3 -2
  291. package/src/models/index.ts +1 -0
@@ -1,9 +1,9 @@
1
- import { column, Model } from '@simonbackx/simple-database';
2
- import { SQL, SQLWhereSign } from '@stamhoofd/sql';
1
+ import { column } from '@simonbackx/simple-database';
2
+ import { QueryableModel, SQL, SQLWhereSign } from '@stamhoofd/sql';
3
3
  import { RegistrationPeriodBase, RegistrationPeriodSettings, RegistrationPeriod as RegistrationPeriodStruct } from '@stamhoofd/structures';
4
4
  import { v4 as uuidv4 } from 'uuid';
5
5
 
6
- export class RegistrationPeriod extends Model {
6
+ export class RegistrationPeriod extends QueryableModel {
7
7
  static table = 'registration_periods';
8
8
 
9
9
  @column({
@@ -13,6 +13,9 @@ export class RegistrationPeriod extends Model {
13
13
  })
14
14
  id!: string;
15
15
 
16
+ @column({ type: 'string', nullable: true })
17
+ previousPeriodId: string | null = null;
18
+
16
19
  @column({ type: 'string', nullable: true })
17
20
  organizationId: string | null = null;
18
21
 
@@ -70,4 +73,28 @@ export class RegistrationPeriod extends Model {
70
73
 
71
74
  return RegistrationPeriod.fromRow(result[this.table]) ?? null;
72
75
  }
76
+
77
+ async setPreviousPeriodId() {
78
+ const allPeriods = await RegistrationPeriod.where({ organizationId: this.organizationId });
79
+
80
+ // Include self if not yet in database
81
+ if (!this.existsInDatabase) {
82
+ allPeriods.push(this);
83
+ }
84
+
85
+ // Sort by start date
86
+ allPeriods.sort((a, b) => a.startDate.getTime() - b.startDate.getTime());
87
+
88
+ // Take the one before this.periodId
89
+ let previousPeriod: RegistrationPeriod | null = null;
90
+
91
+ for (const period of allPeriods) {
92
+ if (period.id === this.id) {
93
+ break;
94
+ }
95
+ previousPeriod = period;
96
+ }
97
+
98
+ this.previousPeriodId = previousPeriod?.id ?? null;
99
+ }
73
100
  }
@@ -1,7 +1,8 @@
1
- import { column, Model } from '@simonbackx/simple-database';
1
+ import { column } from '@simonbackx/simple-database';
2
+ import { QueryableModel } from '@stamhoofd/sql';
2
3
  import { v4 as uuidv4 } from 'uuid';
3
4
 
4
- export class STCredit extends Model {
5
+ export class STCredit extends QueryableModel {
5
6
  static table = 'stamhoofd_credits';
6
7
 
7
8
  // Columns
@@ -1,10 +1,11 @@
1
- import { column, ManyToOneRelation, Model } from '@simonbackx/simple-database';
1
+ import { column, ManyToOneRelation } from '@simonbackx/simple-database';
2
+ import { QueryableModel } from '@stamhoofd/sql';
2
3
  import { STInvoiceMeta } from '@stamhoofd/structures';
3
4
  import { v4 as uuidv4 } from 'uuid';
4
5
 
5
6
  import { Organization, Payment } from './';
6
7
 
7
- export class STInvoice extends Model {
8
+ export class STInvoice extends QueryableModel {
8
9
  static table = 'stamhoofd_invoices';
9
10
 
10
11
  private static numberCache: number | null = null;
@@ -1,5 +1,6 @@
1
- import { column, Model } from '@simonbackx/simple-database';
1
+ import { column } from '@simonbackx/simple-database';
2
2
  import { SimpleError } from '@simonbackx/simple-errors';
3
+ import { QueryableModel } from '@stamhoofd/sql';
3
4
  import { EmailTemplateType, Recipient, Replacement, STPackageMeta, STPackageStatus, STPackageType } from '@stamhoofd/structures';
4
5
  import { Formatter } from '@stamhoofd/utility';
5
6
  import { v4 as uuidv4 } from 'uuid';
@@ -8,7 +9,7 @@ import { sendEmailTemplate } from '../helpers/EmailBuilder';
8
9
  import { GroupBuilder } from '../helpers/GroupBuilder';
9
10
  import { Organization } from './';
10
11
 
11
- export class STPackage extends Model {
12
+ export class STPackage extends QueryableModel {
12
13
  static table = 'stamhoofd_packages';
13
14
 
14
15
  // Columns
@@ -1,4 +1,5 @@
1
- import { column, ManyToOneRelation, Model } from '@simonbackx/simple-database';
1
+ import { column, ManyToOneRelation } from '@simonbackx/simple-database';
2
+ import { QueryableModel } from '@stamhoofd/sql';
2
3
  import { STInvoiceMeta } from '@stamhoofd/structures';
3
4
  import { v4 as uuidv4 } from 'uuid';
4
5
 
@@ -15,7 +16,7 @@ import { Organization } from './';
15
16
  *
16
17
  * So please make sure you don't edit existing items, unless you change the id
17
18
  */
18
- export class STPendingInvoice extends Model {
19
+ export class STPendingInvoice extends QueryableModel {
19
20
  static table = 'stamhoofd_pending_invoices';
20
21
 
21
22
  // Columns
@@ -1,12 +1,13 @@
1
1
  /* eslint-disable @typescript-eslint/no-unsafe-argument */
2
- import { column, Model } from '@simonbackx/simple-database';
2
+ import { column } from '@simonbackx/simple-database';
3
+ import { QueryableModel } from '@stamhoofd/sql';
3
4
  import { Requirements, StripeBusinessProfile, StripeCompany, StripeMetaAccountDashboardSettings, StripeMetaAccountSettings, StripeMetaData } from '@stamhoofd/structures';
4
5
  import { v4 as uuidv4 } from 'uuid';
5
6
 
6
7
  /**
7
8
  * Keeps track of how much a member/user owes or needs to be reimbursed.
8
9
  */
9
- export class StripeAccount extends Model {
10
+ export class StripeAccount extends QueryableModel {
10
11
  static table = 'stripe_accounts';
11
12
 
12
13
  @column({
@@ -1,7 +1,8 @@
1
- import { column, Model } from '@simonbackx/simple-database';
1
+ import { column } from '@simonbackx/simple-database';
2
+ import { QueryableModel } from '@stamhoofd/sql';
2
3
  import { v4 as uuidv4 } from 'uuid';
3
4
 
4
- export class StripeCheckoutSession extends Model {
5
+ export class StripeCheckoutSession extends QueryableModel {
5
6
  static table = 'stripe_checkout_sessions';
6
7
 
7
8
  @column({
@@ -1,7 +1,8 @@
1
- import { column, Model } from '@simonbackx/simple-database';
1
+ import { column } from '@simonbackx/simple-database';
2
+ import { QueryableModel } from '@stamhoofd/sql';
2
3
  import { v4 as uuidv4 } from 'uuid';
3
4
 
4
- export class StripePaymentIntent extends Model {
5
+ export class StripePaymentIntent extends QueryableModel {
5
6
  static table = 'stripe_payment_intents';
6
7
 
7
8
  @column({
@@ -1,4 +1,5 @@
1
- import { column, ManyToOneRelation, Model } from '@simonbackx/simple-database';
1
+ import { column, ManyToOneRelation } from '@simonbackx/simple-database';
2
+ import { QueryableModel } from '@stamhoofd/sql';
2
3
  import { CartReservedSeat } from '@stamhoofd/structures';
3
4
  import basex from 'base-x';
4
5
  import crypto from 'crypto';
@@ -27,7 +28,7 @@ async function randomBytes(size: number): Promise<Buffer> {
27
28
  * This avoids the select in the database, saving some bytes in network communication
28
29
  * (especially needed when clients requests all the changed tickets)
29
30
  */
30
- export class Ticket extends Model {
31
+ export class Ticket extends QueryableModel {
31
32
  static table = 'webshop_tickets';
32
33
 
33
34
  // Columns
@@ -1,4 +1,5 @@
1
- import { column, Database, ManyToOneRelation, Model } from '@simonbackx/simple-database';
1
+ import { column, Database, ManyToOneRelation } from '@simonbackx/simple-database';
2
+ import { QueryableModel } from '@stamhoofd/sql';
2
3
  import { ApiUser } from '@stamhoofd/structures';
3
4
  import crypto from 'crypto';
4
5
 
@@ -44,7 +45,7 @@ export const apiUserRateLimiter = new RateLimiter({
44
45
  ],
45
46
  });
46
47
 
47
- export class Token extends Model {
48
+ export class Token extends QueryableModel {
48
49
  static table = 'tokens';
49
50
  static MAX_DEVICES = 15;
50
51
 
@@ -1,7 +1,8 @@
1
- import { column, Model } from '@simonbackx/simple-database';
1
+ import { column } from '@simonbackx/simple-database';
2
+ import { QueryableModel } from '@stamhoofd/sql';
2
3
  import { v4 as uuidv4 } from 'uuid';
3
4
 
4
- export class UsedRegisterCode extends Model {
5
+ export class UsedRegisterCode extends QueryableModel {
5
6
  static table = 'used_register_codes';
6
7
 
7
8
  @column({
@@ -1,12 +1,14 @@
1
- import { column, Database, ManyToOneRelation, Model } from '@simonbackx/simple-database';
1
+ import { column, Database, ManyToOneRelation } from '@simonbackx/simple-database';
2
2
  import { EmailInterfaceRecipient } from '@stamhoofd/email';
3
+ import { QueryableModel } from '@stamhoofd/sql';
3
4
  import { LoginProviderType, NewUser, Permissions, Recipient, Replacement, UserMeta, UserPermissions, User as UserStruct } from '@stamhoofd/structures';
4
5
  import argon2 from 'argon2';
5
6
  import { v4 as uuidv4 } from 'uuid';
6
7
 
7
8
  import { Organization } from './';
9
+ import { QueueHandler } from '@stamhoofd/queues';
8
10
 
9
- export class User extends Model {
11
+ export class User extends QueryableModel {
10
12
  static table = 'users';
11
13
 
12
14
  // Columns
@@ -140,7 +142,7 @@ export class User extends Model {
140
142
  }
141
143
 
142
144
  return (
143
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
145
+
144
146
  await User.where(query)
145
147
  ).filter(a => !a.isApiUser);
146
148
  }
@@ -479,4 +481,30 @@ export class User extends Model {
479
481
  },
480
482
  ];
481
483
  }
484
+
485
+ /**
486
+ * Get internal system user that can be used on places that require a user object but the system is the actor
487
+ */
488
+ static async getSystem(): Promise<User> {
489
+ return QueueHandler.schedule('User.getSystem', async () => {
490
+ // Build a new one
491
+ let model = await this.getByID('1');
492
+ if (!model) {
493
+ // Create a new platform
494
+ model = new User();
495
+ model.id = '1';
496
+ model.firstName = 'System';
497
+ model.email = 'webmaster@stamhoofd.be';
498
+ model.verified = true;
499
+ model.permissions = UserPermissions.create({
500
+ globalPermissions: Permissions.full,
501
+ });
502
+ model.organizationId = null;
503
+
504
+ await model.save();
505
+ }
506
+
507
+ return model;
508
+ });
509
+ }
482
510
  }
@@ -1,10 +1,11 @@
1
- import { column, ManyToOneRelation, Model } from '@simonbackx/simple-database';
1
+ import { column, ManyToOneRelation } from '@simonbackx/simple-database';
2
+ import { QueryableModel } from '@stamhoofd/sql';
2
3
  import { Permissions } from '@stamhoofd/structures';
3
4
  import { v4 as uuidv4 } from 'uuid';
4
5
 
5
6
  import { Organization, User } from './';
6
7
 
7
- export class UserPermissions extends Model {
8
+ export class UserPermissions extends QueryableModel {
8
9
  static table = 'user_permissions';
9
10
 
10
11
  // Columns
@@ -1,12 +1,13 @@
1
- import { column, Database, ManyToOneRelation, Model } from '@simonbackx/simple-database';
1
+ import { column, Database, ManyToOneRelation } from '@simonbackx/simple-database';
2
2
  import { ArrayDecoder } from '@simonbackx/simple-encoding';
3
+ import { QueryableModel } from '@stamhoofd/sql';
3
4
  import { Category, DNSRecordStatus, Product, WebshopMetaData, WebshopPrivateMetaData, WebshopServerMetaData } from '@stamhoofd/structures';
4
5
  import { v4 as uuidv4 } from 'uuid';
5
6
  import { validateDNSRecords } from '../helpers/DNSValidator';
6
7
 
7
8
  import { Organization } from './';
8
9
 
9
- export class Webshop extends Model {
10
+ export class Webshop extends QueryableModel {
10
11
  static table = 'webshops';
11
12
 
12
13
  // Columns
@@ -1,9 +1,10 @@
1
- import { column, Model } from '@simonbackx/simple-database';
1
+ import { column } from '@simonbackx/simple-database';
2
2
  import { ArrayDecoder } from '@simonbackx/simple-encoding';
3
+ import { QueryableModel } from '@stamhoofd/sql';
3
4
  import { Discount, DiscountCode } from '@stamhoofd/structures';
4
5
  import { v4 as uuidv4 } from 'uuid';
5
6
 
6
- export class WebshopDiscountCode extends Model {
7
+ export class WebshopDiscountCode extends QueryableModel {
7
8
  static table = 'webshop_discount_codes';
8
9
 
9
10
  // Columns
@@ -1,10 +1,11 @@
1
- import { column, ManyToOneRelation, Model } from '@simonbackx/simple-database';
1
+ import { column, ManyToOneRelation } from '@simonbackx/simple-database';
2
2
  import { Country } from '@stamhoofd/structures';
3
3
  import { v4 as uuidv4 } from 'uuid';
4
4
 
5
+ import { QueryableModel } from '@stamhoofd/sql';
5
6
  import { Province } from './Province';
6
7
 
7
- export class City extends Model {
8
+ export class City extends QueryableModel {
8
9
  static table = 'cities';
9
10
 
10
11
  @column({
@@ -1,12 +1,13 @@
1
- import { column, Database, ManyToOneRelation, Model } from '@simonbackx/simple-database';
1
+ import { column, Database, ManyToOneRelation } from '@simonbackx/simple-database';
2
2
  import { SimpleError } from '@simonbackx/simple-errors';
3
+ import { QueryableModel } from '@stamhoofd/sql';
3
4
  import { Country } from '@stamhoofd/structures';
4
5
  import { Formatter, StringCompare } from '@stamhoofd/utility';
5
6
  import { v4 as uuidv4 } from 'uuid';
6
7
 
7
8
  import { City } from './City';
8
9
 
9
- export class PostalCode extends Model {
10
+ export class PostalCode extends QueryableModel {
10
11
  static table = 'postal_codes';
11
12
 
12
13
  @column({
@@ -1,8 +1,9 @@
1
- import { column, Model } from '@simonbackx/simple-database';
1
+ import { column } from '@simonbackx/simple-database';
2
+ import { QueryableModel } from '@stamhoofd/sql';
2
3
  import { Country } from '@stamhoofd/structures';
3
4
  import { v4 as uuidv4 } from 'uuid';
4
5
 
5
- export class Province extends Model {
6
+ export class Province extends QueryableModel {
6
7
  static table = 'provinces';
7
8
 
8
9
  @column({
@@ -1,9 +1,10 @@
1
- import { column, ManyToOneRelation, Model } from '@simonbackx/simple-database';
1
+ import { column, ManyToOneRelation } from '@simonbackx/simple-database';
2
+ import { QueryableModel } from '@stamhoofd/sql';
2
3
  import { v4 as uuidv4 } from 'uuid';
3
4
 
4
5
  import { City } from './City';
5
6
 
6
- export class Street extends Model {
7
+ export class Street extends QueryableModel {
7
8
  static table = 'streets';
8
9
 
9
10
  @column({
@@ -53,3 +53,4 @@ export * from './EmailRecipient';
53
53
  export * from './Event';
54
54
  export * from './CachedBalance';
55
55
  export * from './AuditLog';
56
+ export * from './MemberUser';