nextjs-cms 0.5.9 → 0.5.10

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 (258) hide show
  1. package/dist/api/axios/axiosInstance.d.ts +1 -1
  2. package/dist/api/axios/axiosInstance.js +8 -8
  3. package/dist/api/index.d.ts +855 -855
  4. package/dist/api/index.d.ts.map +1 -1
  5. package/dist/api/index.js +12 -12
  6. package/dist/api/lib/serverActions.d.ts +239 -239
  7. package/dist/api/lib/serverActions.d.ts.map +1 -1
  8. package/dist/api/lib/serverActions.js +834 -834
  9. package/dist/api/root.d.ts +828 -828
  10. package/dist/api/root.js +30 -30
  11. package/dist/api/routers/accountSettings.d.ts +60 -60
  12. package/dist/api/routers/accountSettings.js +108 -108
  13. package/dist/api/routers/admins.d.ts +105 -105
  14. package/dist/api/routers/admins.js +219 -219
  15. package/dist/api/routers/auth.d.ts +47 -47
  16. package/dist/api/routers/auth.js +25 -25
  17. package/dist/api/routers/categorySection.d.ts +103 -103
  18. package/dist/api/routers/categorySection.js +38 -38
  19. package/dist/api/routers/cmsSettings.d.ts +48 -48
  20. package/dist/api/routers/cmsSettings.js +51 -51
  21. package/dist/api/routers/cpanel.d.ts +83 -83
  22. package/dist/api/routers/cpanel.js +216 -216
  23. package/dist/api/routers/files.d.ts +47 -47
  24. package/dist/api/routers/files.js +23 -23
  25. package/dist/api/routers/gallery.d.ts +35 -35
  26. package/dist/api/routers/gallery.js +62 -62
  27. package/dist/api/routers/googleAnalytics.d.ts +30 -30
  28. package/dist/api/routers/googleAnalytics.js +7 -7
  29. package/dist/api/routers/hasItemsSection.d.ts +139 -139
  30. package/dist/api/routers/hasItemsSection.js +34 -34
  31. package/dist/api/routers/navigation.d.ts +51 -51
  32. package/dist/api/routers/navigation.js +11 -11
  33. package/dist/api/routers/simpleSection.d.ts +57 -57
  34. package/dist/api/routers/simpleSection.js +12 -12
  35. package/dist/api/trpc.d.ts +106 -106
  36. package/dist/api/trpc.js +72 -72
  37. package/dist/auth/axios/axiosInstance.d.ts +1 -1
  38. package/dist/auth/axios/axiosInstance.js +8 -8
  39. package/dist/auth/csrf.d.ts +29 -29
  40. package/dist/auth/csrf.js +76 -76
  41. package/dist/auth/hooks/index.d.ts +3 -3
  42. package/dist/auth/hooks/index.d.ts.map +1 -1
  43. package/dist/auth/hooks/index.js +3 -3
  44. package/dist/auth/hooks/useAxiosPrivate.d.ts +4 -4
  45. package/dist/auth/hooks/useAxiosPrivate.js +74 -74
  46. package/dist/auth/hooks/useRefreshToken.d.ts +6 -6
  47. package/dist/auth/hooks/useRefreshToken.js +79 -79
  48. package/dist/auth/index.d.ts +22 -22
  49. package/dist/auth/index.js +44 -44
  50. package/dist/auth/jwt.d.ts +5 -5
  51. package/dist/auth/jwt.js +25 -25
  52. package/dist/auth/lib/actions.d.ts +32 -32
  53. package/dist/auth/lib/actions.d.ts.map +1 -1
  54. package/dist/auth/lib/actions.js +209 -209
  55. package/dist/auth/lib/client.d.ts +3 -3
  56. package/dist/auth/lib/client.js +46 -46
  57. package/dist/auth/lib/index.d.ts +2 -2
  58. package/dist/auth/lib/index.d.ts.map +1 -1
  59. package/dist/auth/lib/index.js +2 -2
  60. package/dist/auth/react.d.ts +105 -105
  61. package/dist/auth/react.d.ts.map +1 -1
  62. package/dist/auth/react.js +347 -347
  63. package/dist/auth/trpc.d.ts +5 -5
  64. package/dist/auth/trpc.d.ts.map +1 -1
  65. package/dist/auth/trpc.js +81 -81
  66. package/dist/core/config/config-loader.d.ts +91 -91
  67. package/dist/core/config/config-loader.js +230 -230
  68. package/dist/core/config/index.d.ts +2 -2
  69. package/dist/core/config/index.d.ts.map +1 -1
  70. package/dist/core/config/index.js +1 -1
  71. package/dist/core/config/loader.d.ts +1 -1
  72. package/dist/core/config/loader.js +42 -42
  73. package/dist/core/db/index.d.ts +1 -1
  74. package/dist/core/db/index.d.ts.map +1 -1
  75. package/dist/core/db/index.js +1 -1
  76. package/dist/core/db/table-checker/DbTable.d.ts +5 -5
  77. package/dist/core/db/table-checker/DbTable.js +5 -5
  78. package/dist/core/db/table-checker/MysqlTable.d.ts +33 -33
  79. package/dist/core/db/table-checker/MysqlTable.d.ts.map +1 -1
  80. package/dist/core/db/table-checker/MysqlTable.js +94 -94
  81. package/dist/core/db/table-checker/index.d.ts +1 -1
  82. package/dist/core/db/table-checker/index.d.ts.map +1 -1
  83. package/dist/core/db/table-checker/index.js +1 -1
  84. package/dist/core/factories/FieldFactory.d.ts +123 -123
  85. package/dist/core/factories/FieldFactory.d.ts.map +1 -1
  86. package/dist/core/factories/FieldFactory.js +411 -411
  87. package/dist/core/factories/SectionFactory.d.ts +109 -109
  88. package/dist/core/factories/SectionFactory.d.ts.map +1 -1
  89. package/dist/core/factories/SectionFactory.js +415 -415
  90. package/dist/core/factories/index.d.ts +2 -2
  91. package/dist/core/factories/index.d.ts.map +1 -1
  92. package/dist/core/factories/index.js +2 -2
  93. package/dist/core/fields/checkbox.d.ts +62 -62
  94. package/dist/core/fields/checkbox.d.ts.map +1 -1
  95. package/dist/core/fields/checkbox.js +62 -62
  96. package/dist/core/fields/color.d.ts +83 -83
  97. package/dist/core/fields/color.d.ts.map +1 -1
  98. package/dist/core/fields/color.js +91 -91
  99. package/dist/core/fields/date.d.ts +99 -99
  100. package/dist/core/fields/date.d.ts.map +1 -1
  101. package/dist/core/fields/date.js +108 -108
  102. package/dist/core/fields/document.d.ts +179 -179
  103. package/dist/core/fields/document.d.ts.map +1 -1
  104. package/dist/core/fields/document.js +277 -277
  105. package/dist/core/fields/field-group.d.ts +17 -17
  106. package/dist/core/fields/field-group.d.ts.map +1 -1
  107. package/dist/core/fields/field-group.js +6 -6
  108. package/dist/core/fields/field.d.ts +125 -125
  109. package/dist/core/fields/field.d.ts.map +1 -1
  110. package/dist/core/fields/field.js +148 -148
  111. package/dist/core/fields/fileField.d.ts +14 -14
  112. package/dist/core/fields/fileField.d.ts.map +1 -1
  113. package/dist/core/fields/fileField.js +5 -5
  114. package/dist/core/fields/index.d.ts +64 -64
  115. package/dist/core/fields/index.d.ts.map +1 -1
  116. package/dist/core/fields/index.js +18 -18
  117. package/dist/core/fields/map.d.ts +166 -166
  118. package/dist/core/fields/map.d.ts.map +1 -1
  119. package/dist/core/fields/map.js +152 -152
  120. package/dist/core/fields/number.d.ts +185 -185
  121. package/dist/core/fields/number.d.ts.map +1 -1
  122. package/dist/core/fields/number.js +241 -241
  123. package/dist/core/fields/password.d.ts +108 -108
  124. package/dist/core/fields/password.d.ts.map +1 -1
  125. package/dist/core/fields/password.js +133 -133
  126. package/dist/core/fields/photo.d.ts +288 -288
  127. package/dist/core/fields/photo.d.ts.map +1 -1
  128. package/dist/core/fields/photo.js +410 -410
  129. package/dist/core/fields/richText.d.ts +294 -294
  130. package/dist/core/fields/richText.d.ts.map +1 -1
  131. package/dist/core/fields/richText.js +338 -338
  132. package/dist/core/fields/select.d.ts +365 -365
  133. package/dist/core/fields/select.d.ts.map +1 -1
  134. package/dist/core/fields/select.js +499 -499
  135. package/dist/core/fields/selectMultiple.d.ts +235 -235
  136. package/dist/core/fields/selectMultiple.d.ts.map +1 -1
  137. package/dist/core/fields/selectMultiple.js +417 -417
  138. package/dist/core/fields/tags.d.ts +130 -130
  139. package/dist/core/fields/tags.d.ts.map +1 -1
  140. package/dist/core/fields/tags.js +105 -105
  141. package/dist/core/fields/text.d.ts +135 -135
  142. package/dist/core/fields/text.d.ts.map +1 -1
  143. package/dist/core/fields/text.js +157 -157
  144. package/dist/core/fields/textArea.d.ts +106 -106
  145. package/dist/core/fields/textArea.d.ts.map +1 -1
  146. package/dist/core/fields/textArea.js +126 -126
  147. package/dist/core/fields/video.d.ts +147 -147
  148. package/dist/core/fields/video.d.ts.map +1 -1
  149. package/dist/core/fields/video.js +248 -248
  150. package/dist/core/helpers/entity.d.ts +7 -7
  151. package/dist/core/helpers/entity.js +27 -27
  152. package/dist/core/helpers/index.d.ts +4 -4
  153. package/dist/core/helpers/index.d.ts.map +1 -1
  154. package/dist/core/helpers/index.js +3 -3
  155. package/dist/core/index.d.ts +7 -7
  156. package/dist/core/index.d.ts.map +1 -1
  157. package/dist/core/index.js +7 -7
  158. package/dist/core/sections/category.d.ts +282 -282
  159. package/dist/core/sections/category.d.ts.map +1 -1
  160. package/dist/core/sections/category.js +147 -147
  161. package/dist/core/sections/hasItems.d.ts +631 -631
  162. package/dist/core/sections/hasItems.d.ts.map +1 -1
  163. package/dist/core/sections/hasItems.js +144 -144
  164. package/dist/core/sections/index.d.ts +4 -4
  165. package/dist/core/sections/index.d.ts.map +1 -1
  166. package/dist/core/sections/index.js +4 -4
  167. package/dist/core/sections/section.d.ts +225 -225
  168. package/dist/core/sections/section.d.ts.map +1 -1
  169. package/dist/core/sections/section.js +341 -341
  170. package/dist/core/sections/simple.d.ts +98 -98
  171. package/dist/core/sections/simple.d.ts.map +1 -1
  172. package/dist/core/sections/simple.js +95 -95
  173. package/dist/core/security/dom.d.ts +10 -10
  174. package/dist/core/security/dom.js +92 -92
  175. package/dist/core/submit/ItemEditSubmit.d.ts +75 -75
  176. package/dist/core/submit/ItemEditSubmit.js +186 -186
  177. package/dist/core/submit/NewItemSubmit.d.ts +13 -13
  178. package/dist/core/submit/NewItemSubmit.js +93 -93
  179. package/dist/core/submit/SimpleSectionSubmit.d.ts +12 -12
  180. package/dist/core/submit/SimpleSectionSubmit.js +93 -93
  181. package/dist/core/submit/index.d.ts +4 -4
  182. package/dist/core/submit/index.js +4 -4
  183. package/dist/core/submit/submit.d.ts +115 -115
  184. package/dist/core/submit/submit.js +479 -479
  185. package/dist/core/types/index.d.ts +279 -279
  186. package/dist/core/types/index.d.ts.map +1 -1
  187. package/dist/core/types/index.js +1 -1
  188. package/dist/db/client.d.ts +8 -8
  189. package/dist/db/client.d.ts.map +1 -1
  190. package/dist/db/client.js +19 -19
  191. package/dist/db/config.d.ts +5 -5
  192. package/dist/db/config.js +22 -22
  193. package/dist/db/drizzle.config.d.ts +5 -5
  194. package/dist/db/drizzle.config.js +18 -18
  195. package/dist/db/index.d.ts +2 -2
  196. package/dist/db/index.js +3 -3
  197. package/dist/db/schema.d.ts +638 -638
  198. package/dist/db/schema.js +73 -73
  199. package/dist/index.d.ts +7 -7
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +7 -7
  202. package/dist/translations/index.d.ts +2 -2
  203. package/dist/translations/index.js +15 -15
  204. package/dist/utils/CpanelApi.d.ts +24 -24
  205. package/dist/utils/CpanelApi.js +64 -64
  206. package/dist/utils/constants.d.ts +13 -13
  207. package/dist/utils/constants.js +61 -61
  208. package/dist/utils/index.d.ts +4 -4
  209. package/dist/utils/index.d.ts.map +1 -1
  210. package/dist/utils/index.js +4 -4
  211. package/dist/utils/utils.d.ts +59 -59
  212. package/dist/utils/utils.js +132 -132
  213. package/dist/validators/checkbox.d.ts +3 -3
  214. package/dist/validators/checkbox.d.ts.map +1 -1
  215. package/dist/validators/checkbox.js +12 -12
  216. package/dist/validators/color.d.ts +3 -3
  217. package/dist/validators/color.d.ts.map +1 -1
  218. package/dist/validators/color.js +7 -7
  219. package/dist/validators/date.d.ts +3 -3
  220. package/dist/validators/date.d.ts.map +1 -1
  221. package/dist/validators/date.js +5 -5
  222. package/dist/validators/document.d.ts +3 -3
  223. package/dist/validators/document.d.ts.map +1 -1
  224. package/dist/validators/document.js +57 -57
  225. package/dist/validators/index.d.ts +14 -14
  226. package/dist/validators/index.d.ts.map +1 -1
  227. package/dist/validators/index.js +14 -14
  228. package/dist/validators/map.d.ts +3 -3
  229. package/dist/validators/map.d.ts.map +1 -1
  230. package/dist/validators/map.js +5 -5
  231. package/dist/validators/number.d.ts +3 -3
  232. package/dist/validators/number.d.ts.map +1 -1
  233. package/dist/validators/number.js +20 -20
  234. package/dist/validators/password.d.ts +3 -3
  235. package/dist/validators/password.d.ts.map +1 -1
  236. package/dist/validators/password.js +11 -11
  237. package/dist/validators/photo.d.ts +3 -3
  238. package/dist/validators/photo.d.ts.map +1 -1
  239. package/dist/validators/photo.js +100 -100
  240. package/dist/validators/richText.d.ts +3 -3
  241. package/dist/validators/richText.d.ts.map +1 -1
  242. package/dist/validators/richText.js +8 -8
  243. package/dist/validators/select-multiple.d.ts +9 -9
  244. package/dist/validators/select-multiple.d.ts.map +1 -1
  245. package/dist/validators/select-multiple.js +20 -20
  246. package/dist/validators/select.d.ts +3 -3
  247. package/dist/validators/select.d.ts.map +1 -1
  248. package/dist/validators/select.js +5 -5
  249. package/dist/validators/text.d.ts +3 -3
  250. package/dist/validators/text.d.ts.map +1 -1
  251. package/dist/validators/text.js +7 -7
  252. package/dist/validators/textarea.d.ts +3 -3
  253. package/dist/validators/textarea.d.ts.map +1 -1
  254. package/dist/validators/textarea.js +7 -7
  255. package/dist/validators/video.d.ts +3 -3
  256. package/dist/validators/video.d.ts.map +1 -1
  257. package/dist/validators/video.js +57 -57
  258. package/package.json +2 -3
@@ -1,76 +1,76 @@
1
- import type { SQL } from 'drizzle-orm';
2
- import type { Field } from "../fields.js";
3
- import { Submit } from "./submit.js";
4
- import { entityKind } from "../helpers.js";
5
- import type { User } from "../../auth.js";
6
- type ConstructorType = {
7
- itemId: string;
8
- sectionName: string;
9
- user: User;
10
- postData: FormData;
11
- preSubmit?: boolean;
12
- };
13
- export declare class EditSubmit extends Submit {
14
- static readonly [entityKind]: string;
15
- protected readonly _itemId: string;
16
- protected _values: Record<string, any>;
17
- /**
18
- * Constructor
19
- */
20
- constructor(config: ConstructorType);
21
- /**
22
- * Must be called after the constructor
23
- * @override
24
- */
25
- initialize(): Promise<void>;
26
- private initializeFieldValues;
27
- /**
28
- * Gets the field values from the associated table declared in the section info
29
- * @private
30
- */
31
- private getFieldValue;
32
- private getSelectMultipleValue;
33
- /**
34
- * Rollback post submit operations
35
- * This will rollback the post submit operations for each field (if any)
36
- * @private
37
- * @override
38
- */
39
- protected postSubmitRollback(): Promise<void>;
40
- /**
41
- * Rollback submit
42
- * This will rollback the submit for this item
43
- * @returns
44
- * @override
45
- */
46
- protected submitRollback(): Promise<void>;
47
- /**
48
- * Build the sql query
49
- * @override
50
- */
51
- protected buildSqlQuery(): SQL | undefined;
52
- /**
53
- * Check required fields
54
- * @param field
55
- * @override
56
- */
57
- checkRequired(field: Field): void;
58
- /**
59
- * Handle field override, don't handle readonly or identifier fields
60
- * @param field
61
- * @override
62
- */
63
- handleField(field: Field): Promise<void>;
64
- /**
65
- * Item id value is already assigned in the constructor
66
- */
67
- assignItemIdValue(): void;
68
- /**
69
- * Set field value override
70
- * @param field
71
- * @override
72
- */
73
- setFieldValue(field: Field): void;
74
- }
75
- export {};
1
+ import type { SQL } from 'drizzle-orm';
2
+ import type { Field } from '../fields';
3
+ import { Submit } from './submit';
4
+ import { entityKind } from '../helpers';
5
+ import type { User } from '../../auth';
6
+ type ConstructorType = {
7
+ itemId: string;
8
+ sectionName: string;
9
+ user: User;
10
+ postData: FormData;
11
+ preSubmit?: boolean;
12
+ };
13
+ export declare class EditSubmit extends Submit {
14
+ static readonly [entityKind]: string;
15
+ protected readonly _itemId: string;
16
+ protected _values: Record<string, any>;
17
+ /**
18
+ * Constructor
19
+ */
20
+ constructor(config: ConstructorType);
21
+ /**
22
+ * Must be called after the constructor
23
+ * @override
24
+ */
25
+ initialize(): Promise<void>;
26
+ private initializeFieldValues;
27
+ /**
28
+ * Gets the field values from the associated table declared in the section info
29
+ * @private
30
+ */
31
+ private getFieldValue;
32
+ private getSelectMultipleValue;
33
+ /**
34
+ * Rollback post submit operations
35
+ * This will rollback the post submit operations for each field (if any)
36
+ * @private
37
+ * @override
38
+ */
39
+ protected postSubmitRollback(): Promise<void>;
40
+ /**
41
+ * Rollback submit
42
+ * This will rollback the submit for this item
43
+ * @returns
44
+ * @override
45
+ */
46
+ protected submitRollback(): Promise<void>;
47
+ /**
48
+ * Build the sql query
49
+ * @override
50
+ */
51
+ protected buildSqlQuery(): SQL | undefined;
52
+ /**
53
+ * Check required fields
54
+ * @param field
55
+ * @override
56
+ */
57
+ checkRequired(field: Field): void;
58
+ /**
59
+ * Handle field override, don't handle readonly or identifier fields
60
+ * @param field
61
+ * @override
62
+ */
63
+ handleField(field: Field): Promise<void>;
64
+ /**
65
+ * Item id value is already assigned in the constructor
66
+ */
67
+ assignItemIdValue(): void;
68
+ /**
69
+ * Set field value override
70
+ * @param field
71
+ * @override
72
+ */
73
+ setFieldValue(field: Field): void;
74
+ }
75
+ export {};
76
76
  //# sourceMappingURL=ItemEditSubmit.d.ts.map
@@ -1,186 +1,186 @@
1
- import { sql } from 'drizzle-orm';
2
- import { db } from "../../db/client.js";
3
- import { Submit } from "./submit.js";
4
- import { FileField } from "../fields.js";
5
- import { entityKind, is } from "../helpers.js";
6
- export class EditSubmit extends Submit {
7
- static [entityKind] = 'EditSubmit';
8
- _itemId;
9
- _values = {};
10
- /**
11
- * Constructor
12
- */
13
- constructor(config) {
14
- super(config);
15
- this._itemId = config.itemId;
16
- }
17
- /**
18
- * Must be called after the constructor
19
- * @override
20
- */
21
- async initialize() {
22
- await super.initialize('U');
23
- /**
24
- * It's an edit operation, let's get all fields values
25
- */
26
- await this.initializeFieldValues();
27
- }
28
- async initializeFieldValues() {
29
- if (this._error)
30
- return;
31
- if (!this._itemId)
32
- return;
33
- if (this._sectionInfo?.db.table && this._sectionInfo.db.identifier) {
34
- /**
35
- * Let's get the section item values from its table and assign it to the `_values` property
36
- */
37
- // TODO: We still need to get the values from the `destinationDbTable` if it exists on any field
38
- // also, select_multiple fields need to be handled the same way, plus value is array of strings
39
- const [_v, fields] = await db.execute(sql `select * from ${sql.raw(this._sectionInfo.db.table)} where ${sql.raw(this._sectionInfo.db.identifier.name)} = ${this._itemId} limit 1`);
40
- // @ts-ignore
41
- // Bug: this is a bug in drizzle-orm/mysql2
42
- this._values = _v[0];
43
- }
44
- else {
45
- this._error = true;
46
- this._errorMessage = 'Section table or section table identifier is missing';
47
- return;
48
- }
49
- }
50
- /**
51
- * Gets the field values from the associated table declared in the section info
52
- * @private
53
- */
54
- async getFieldValue(field) {
55
- if (field.type === 'select_multiple') {
56
- return await this.getSelectMultipleValue(field);
57
- }
58
- return this._values[field.name] ?? undefined;
59
- }
60
- async getSelectMultipleValue(field) {
61
- if (!field.destinationDb)
62
- return this._values[field.name] ?? undefined;
63
- const [_rows, _fields] = await db.execute(sql `select * from ${sql.raw(field.destinationDb.table)} a JOIN ${sql.raw(field.db.table)} b ON a.${sql.raw(field.destinationDb.selectIdentifier)} = b.${sql.raw(field.db.identifier)} where ${sql.raw(field.destinationDb.itemIdentifier)} = ${this._itemId}`);
64
- const values = [];
65
- for (const row of _rows) {
66
- values.push({
67
- value: row[field.destinationDb.selectIdentifier],
68
- label: row[field.db.label],
69
- });
70
- }
71
- return values;
72
- }
73
- /**
74
- * Rollback post submit operations
75
- * This will rollback the post submit operations for each field (if any)
76
- * @private
77
- * @override
78
- */
79
- async postSubmitRollback() {
80
- await super.postSubmitRollback();
81
- }
82
- /**
83
- * Rollback submit
84
- * This will rollback the submit for this item
85
- * @returns
86
- * @override
87
- */
88
- async submitRollback() {
89
- if (!this._sectionInfo)
90
- return;
91
- /**
92
- * TODO: Implement the rollback operation for the edit operation
93
- * This will involve getting the original values of the fields,
94
- * and updating the table with the original values
95
- */
96
- }
97
- /**
98
- * Build the sql query
99
- * @override
100
- */
101
- buildSqlQuery() {
102
- if (!this._sectionInfo)
103
- return;
104
- /**
105
- * Add the updated_by field to the sqlNamesAndValues object
106
- */
107
- this.sqlNamesAndValues['updated_by'] = this.user.name;
108
- const sqlChunks = [];
109
- sqlChunks.push(sql `update ${sql.raw(this._sectionInfo.db.table)} set `);
110
- Object.keys(this.sqlNamesAndValues).map((value, index) => {
111
- sqlChunks.push(sql.raw(`\`${value}\``));
112
- sqlChunks.push(sql ` = ${this.sqlNamesAndValues[value] ? this.sqlNamesAndValues[value] : sql `NULL`}`);
113
- if (index < Object.values(this.sqlNamesAndValues).length - 1) {
114
- sqlChunks.push(sql `, `);
115
- }
116
- });
117
- sqlChunks.push(sql ` where ${sql.raw(this._sectionInfo.db.identifier.name)} = ${this._itemId}`);
118
- return sql.join(sqlChunks);
119
- }
120
- /**
121
- * Check required fields
122
- * @param field
123
- * @override
124
- */
125
- checkRequired(field) {
126
- /**
127
- * Don't check for required fields for photo, video, and document fields if they have values in the database
128
- */
129
- if (is(field, FileField)) {
130
- /**
131
- * Check if a field value is present in the database
132
- */
133
- if (!this._values[field.name]) {
134
- /**
135
- * If no value is present, check if the field is required
136
- */
137
- field.checkRequired();
138
- }
139
- }
140
- else {
141
- field.checkRequired();
142
- }
143
- }
144
- /**
145
- * Handle field override, don't handle readonly or identifier fields
146
- * @param field
147
- * @override
148
- */
149
- async handleField(field) {
150
- /**
151
- * Don't handle readonly fields
152
- */
153
- if (field.adminGenerated !== true || field.name === this._sectionInfo.db.identifier.name)
154
- return;
155
- await super.handleField(field);
156
- }
157
- /**
158
- * Item id value is already assigned in the constructor
159
- */
160
- assignItemIdValue() {
161
- return;
162
- }
163
- /**
164
- * Set field value override
165
- * @param field
166
- * @override
167
- */
168
- setFieldValue(field) {
169
- /**
170
- * Don't set values for file fields
171
- */
172
- if (is(field, FileField)) {
173
- const value = this._postData.get(field.name);
174
- let file = value;
175
- if (file.size !== 0 && file.name && file.name?.trim() !== '') {
176
- field.setValue(value);
177
- }
178
- else {
179
- field.setFileName(this._values[field.name]);
180
- }
181
- }
182
- else {
183
- super.setFieldValue(field);
184
- }
185
- }
186
- }
1
+ import { sql } from 'drizzle-orm';
2
+ import { db } from '../../db/client';
3
+ import { Submit } from './submit';
4
+ import { FileField } from '../fields';
5
+ import { entityKind, is } from '../helpers';
6
+ export class EditSubmit extends Submit {
7
+ static [entityKind] = 'EditSubmit';
8
+ _itemId;
9
+ _values = {};
10
+ /**
11
+ * Constructor
12
+ */
13
+ constructor(config) {
14
+ super(config);
15
+ this._itemId = config.itemId;
16
+ }
17
+ /**
18
+ * Must be called after the constructor
19
+ * @override
20
+ */
21
+ async initialize() {
22
+ await super.initialize('U');
23
+ /**
24
+ * It's an edit operation, let's get all fields values
25
+ */
26
+ await this.initializeFieldValues();
27
+ }
28
+ async initializeFieldValues() {
29
+ if (this._error)
30
+ return;
31
+ if (!this._itemId)
32
+ return;
33
+ if (this._sectionInfo?.db.table && this._sectionInfo.db.identifier) {
34
+ /**
35
+ * Let's get the section item values from its table and assign it to the `_values` property
36
+ */
37
+ // TODO: We still need to get the values from the `destinationDbTable` if it exists on any field
38
+ // also, select_multiple fields need to be handled the same way, plus value is array of strings
39
+ const [_v, fields] = await db.execute(sql `select * from ${sql.raw(this._sectionInfo.db.table)} where ${sql.raw(this._sectionInfo.db.identifier.name)} = ${this._itemId} limit 1`);
40
+ // @ts-ignore
41
+ // Bug: this is a bug in drizzle-orm/mysql2
42
+ this._values = _v[0];
43
+ }
44
+ else {
45
+ this._error = true;
46
+ this._errorMessage = 'Section table or section table identifier is missing';
47
+ return;
48
+ }
49
+ }
50
+ /**
51
+ * Gets the field values from the associated table declared in the section info
52
+ * @private
53
+ */
54
+ async getFieldValue(field) {
55
+ if (field.type === 'select_multiple') {
56
+ return await this.getSelectMultipleValue(field);
57
+ }
58
+ return this._values[field.name] ?? undefined;
59
+ }
60
+ async getSelectMultipleValue(field) {
61
+ if (!field.destinationDb)
62
+ return this._values[field.name] ?? undefined;
63
+ const [_rows, _fields] = await db.execute(sql `select * from ${sql.raw(field.destinationDb.table)} a JOIN ${sql.raw(field.db.table)} b ON a.${sql.raw(field.destinationDb.selectIdentifier)} = b.${sql.raw(field.db.identifier)} where ${sql.raw(field.destinationDb.itemIdentifier)} = ${this._itemId}`);
64
+ const values = [];
65
+ for (const row of _rows) {
66
+ values.push({
67
+ value: row[field.destinationDb.selectIdentifier],
68
+ label: row[field.db.label],
69
+ });
70
+ }
71
+ return values;
72
+ }
73
+ /**
74
+ * Rollback post submit operations
75
+ * This will rollback the post submit operations for each field (if any)
76
+ * @private
77
+ * @override
78
+ */
79
+ async postSubmitRollback() {
80
+ await super.postSubmitRollback();
81
+ }
82
+ /**
83
+ * Rollback submit
84
+ * This will rollback the submit for this item
85
+ * @returns
86
+ * @override
87
+ */
88
+ async submitRollback() {
89
+ if (!this._sectionInfo)
90
+ return;
91
+ /**
92
+ * TODO: Implement the rollback operation for the edit operation
93
+ * This will involve getting the original values of the fields,
94
+ * and updating the table with the original values
95
+ */
96
+ }
97
+ /**
98
+ * Build the sql query
99
+ * @override
100
+ */
101
+ buildSqlQuery() {
102
+ if (!this._sectionInfo)
103
+ return;
104
+ /**
105
+ * Add the updated_by field to the sqlNamesAndValues object
106
+ */
107
+ this.sqlNamesAndValues['updated_by'] = this.user.name;
108
+ const sqlChunks = [];
109
+ sqlChunks.push(sql `update ${sql.raw(this._sectionInfo.db.table)} set `);
110
+ Object.keys(this.sqlNamesAndValues).map((value, index) => {
111
+ sqlChunks.push(sql.raw(`\`${value}\``));
112
+ sqlChunks.push(sql ` = ${this.sqlNamesAndValues[value] ? this.sqlNamesAndValues[value] : sql `NULL`}`);
113
+ if (index < Object.values(this.sqlNamesAndValues).length - 1) {
114
+ sqlChunks.push(sql `, `);
115
+ }
116
+ });
117
+ sqlChunks.push(sql ` where ${sql.raw(this._sectionInfo.db.identifier.name)} = ${this._itemId}`);
118
+ return sql.join(sqlChunks);
119
+ }
120
+ /**
121
+ * Check required fields
122
+ * @param field
123
+ * @override
124
+ */
125
+ checkRequired(field) {
126
+ /**
127
+ * Don't check for required fields for photo, video, and document fields if they have values in the database
128
+ */
129
+ if (is(field, FileField)) {
130
+ /**
131
+ * Check if a field value is present in the database
132
+ */
133
+ if (!this._values[field.name]) {
134
+ /**
135
+ * If no value is present, check if the field is required
136
+ */
137
+ field.checkRequired();
138
+ }
139
+ }
140
+ else {
141
+ field.checkRequired();
142
+ }
143
+ }
144
+ /**
145
+ * Handle field override, don't handle readonly or identifier fields
146
+ * @param field
147
+ * @override
148
+ */
149
+ async handleField(field) {
150
+ /**
151
+ * Don't handle readonly fields
152
+ */
153
+ if (field.adminGenerated !== true || field.name === this._sectionInfo.db.identifier.name)
154
+ return;
155
+ await super.handleField(field);
156
+ }
157
+ /**
158
+ * Item id value is already assigned in the constructor
159
+ */
160
+ assignItemIdValue() {
161
+ return;
162
+ }
163
+ /**
164
+ * Set field value override
165
+ * @param field
166
+ * @override
167
+ */
168
+ setFieldValue(field) {
169
+ /**
170
+ * Don't set values for file fields
171
+ */
172
+ if (is(field, FileField)) {
173
+ const value = this._postData.get(field.name);
174
+ let file = value;
175
+ if (file.size !== 0 && file.name && file.name?.trim() !== '') {
176
+ field.setValue(value);
177
+ }
178
+ else {
179
+ field.setFileName(this._values[field.name]);
180
+ }
181
+ }
182
+ else {
183
+ super.setFieldValue(field);
184
+ }
185
+ }
186
+ }
@@ -1,14 +1,14 @@
1
- import type { SQL } from 'drizzle-orm';
2
- import { Submit } from "./submit.js";
3
- import { entityKind } from "../helpers.js";
4
- export declare class NewSubmit extends Submit {
5
- static readonly [entityKind]: string;
6
- /**
7
- * Rollback submit
8
- * This will rollback the submit for this item
9
- * @returns
10
- */
11
- protected submitRollback(): Promise<void>;
12
- protected buildSqlQuery(): SQL | undefined;
13
- }
1
+ import type { SQL } from 'drizzle-orm';
2
+ import { Submit } from './submit';
3
+ import { entityKind } from '../helpers';
4
+ export declare class NewSubmit extends Submit {
5
+ static readonly [entityKind]: string;
6
+ /**
7
+ * Rollback submit
8
+ * This will rollback the submit for this item
9
+ * @returns
10
+ */
11
+ protected submitRollback(): Promise<void>;
12
+ protected buildSqlQuery(): SQL | undefined;
13
+ }
14
14
  //# sourceMappingURL=NewItemSubmit.d.ts.map