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.
- package/dist/api/axios/axiosInstance.d.ts +1 -1
- package/dist/api/axios/axiosInstance.js +8 -8
- package/dist/api/index.d.ts +855 -855
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +12 -12
- package/dist/api/lib/serverActions.d.ts +239 -239
- package/dist/api/lib/serverActions.d.ts.map +1 -1
- package/dist/api/lib/serverActions.js +834 -834
- package/dist/api/root.d.ts +828 -828
- package/dist/api/root.js +30 -30
- package/dist/api/routers/accountSettings.d.ts +60 -60
- package/dist/api/routers/accountSettings.js +108 -108
- package/dist/api/routers/admins.d.ts +105 -105
- package/dist/api/routers/admins.js +219 -219
- package/dist/api/routers/auth.d.ts +47 -47
- package/dist/api/routers/auth.js +25 -25
- package/dist/api/routers/categorySection.d.ts +103 -103
- package/dist/api/routers/categorySection.js +38 -38
- package/dist/api/routers/cmsSettings.d.ts +48 -48
- package/dist/api/routers/cmsSettings.js +51 -51
- package/dist/api/routers/cpanel.d.ts +83 -83
- package/dist/api/routers/cpanel.js +216 -216
- package/dist/api/routers/files.d.ts +47 -47
- package/dist/api/routers/files.js +23 -23
- package/dist/api/routers/gallery.d.ts +35 -35
- package/dist/api/routers/gallery.js +62 -62
- package/dist/api/routers/googleAnalytics.d.ts +30 -30
- package/dist/api/routers/googleAnalytics.js +7 -7
- package/dist/api/routers/hasItemsSection.d.ts +139 -139
- package/dist/api/routers/hasItemsSection.js +34 -34
- package/dist/api/routers/navigation.d.ts +51 -51
- package/dist/api/routers/navigation.js +11 -11
- package/dist/api/routers/simpleSection.d.ts +57 -57
- package/dist/api/routers/simpleSection.js +12 -12
- package/dist/api/trpc.d.ts +106 -106
- package/dist/api/trpc.js +72 -72
- package/dist/auth/axios/axiosInstance.d.ts +1 -1
- package/dist/auth/axios/axiosInstance.js +8 -8
- package/dist/auth/csrf.d.ts +29 -29
- package/dist/auth/csrf.js +76 -76
- package/dist/auth/hooks/index.d.ts +3 -3
- package/dist/auth/hooks/index.d.ts.map +1 -1
- package/dist/auth/hooks/index.js +3 -3
- package/dist/auth/hooks/useAxiosPrivate.d.ts +4 -4
- package/dist/auth/hooks/useAxiosPrivate.js +74 -74
- package/dist/auth/hooks/useRefreshToken.d.ts +6 -6
- package/dist/auth/hooks/useRefreshToken.js +79 -79
- package/dist/auth/index.d.ts +22 -22
- package/dist/auth/index.js +44 -44
- package/dist/auth/jwt.d.ts +5 -5
- package/dist/auth/jwt.js +25 -25
- package/dist/auth/lib/actions.d.ts +32 -32
- package/dist/auth/lib/actions.d.ts.map +1 -1
- package/dist/auth/lib/actions.js +209 -209
- package/dist/auth/lib/client.d.ts +3 -3
- package/dist/auth/lib/client.js +46 -46
- package/dist/auth/lib/index.d.ts +2 -2
- package/dist/auth/lib/index.d.ts.map +1 -1
- package/dist/auth/lib/index.js +2 -2
- package/dist/auth/react.d.ts +105 -105
- package/dist/auth/react.d.ts.map +1 -1
- package/dist/auth/react.js +347 -347
- package/dist/auth/trpc.d.ts +5 -5
- package/dist/auth/trpc.d.ts.map +1 -1
- package/dist/auth/trpc.js +81 -81
- package/dist/core/config/config-loader.d.ts +91 -91
- package/dist/core/config/config-loader.js +230 -230
- package/dist/core/config/index.d.ts +2 -2
- package/dist/core/config/index.d.ts.map +1 -1
- package/dist/core/config/index.js +1 -1
- package/dist/core/config/loader.d.ts +1 -1
- package/dist/core/config/loader.js +42 -42
- package/dist/core/db/index.d.ts +1 -1
- package/dist/core/db/index.d.ts.map +1 -1
- package/dist/core/db/index.js +1 -1
- package/dist/core/db/table-checker/DbTable.d.ts +5 -5
- package/dist/core/db/table-checker/DbTable.js +5 -5
- package/dist/core/db/table-checker/MysqlTable.d.ts +33 -33
- package/dist/core/db/table-checker/MysqlTable.d.ts.map +1 -1
- package/dist/core/db/table-checker/MysqlTable.js +94 -94
- package/dist/core/db/table-checker/index.d.ts +1 -1
- package/dist/core/db/table-checker/index.d.ts.map +1 -1
- package/dist/core/db/table-checker/index.js +1 -1
- package/dist/core/factories/FieldFactory.d.ts +123 -123
- package/dist/core/factories/FieldFactory.d.ts.map +1 -1
- package/dist/core/factories/FieldFactory.js +411 -411
- package/dist/core/factories/SectionFactory.d.ts +109 -109
- package/dist/core/factories/SectionFactory.d.ts.map +1 -1
- package/dist/core/factories/SectionFactory.js +415 -415
- package/dist/core/factories/index.d.ts +2 -2
- package/dist/core/factories/index.d.ts.map +1 -1
- package/dist/core/factories/index.js +2 -2
- package/dist/core/fields/checkbox.d.ts +62 -62
- package/dist/core/fields/checkbox.d.ts.map +1 -1
- package/dist/core/fields/checkbox.js +62 -62
- package/dist/core/fields/color.d.ts +83 -83
- package/dist/core/fields/color.d.ts.map +1 -1
- package/dist/core/fields/color.js +91 -91
- package/dist/core/fields/date.d.ts +99 -99
- package/dist/core/fields/date.d.ts.map +1 -1
- package/dist/core/fields/date.js +108 -108
- package/dist/core/fields/document.d.ts +179 -179
- package/dist/core/fields/document.d.ts.map +1 -1
- package/dist/core/fields/document.js +277 -277
- package/dist/core/fields/field-group.d.ts +17 -17
- package/dist/core/fields/field-group.d.ts.map +1 -1
- package/dist/core/fields/field-group.js +6 -6
- package/dist/core/fields/field.d.ts +125 -125
- package/dist/core/fields/field.d.ts.map +1 -1
- package/dist/core/fields/field.js +148 -148
- package/dist/core/fields/fileField.d.ts +14 -14
- package/dist/core/fields/fileField.d.ts.map +1 -1
- package/dist/core/fields/fileField.js +5 -5
- package/dist/core/fields/index.d.ts +64 -64
- package/dist/core/fields/index.d.ts.map +1 -1
- package/dist/core/fields/index.js +18 -18
- package/dist/core/fields/map.d.ts +166 -166
- package/dist/core/fields/map.d.ts.map +1 -1
- package/dist/core/fields/map.js +152 -152
- package/dist/core/fields/number.d.ts +185 -185
- package/dist/core/fields/number.d.ts.map +1 -1
- package/dist/core/fields/number.js +241 -241
- package/dist/core/fields/password.d.ts +108 -108
- package/dist/core/fields/password.d.ts.map +1 -1
- package/dist/core/fields/password.js +133 -133
- package/dist/core/fields/photo.d.ts +288 -288
- package/dist/core/fields/photo.d.ts.map +1 -1
- package/dist/core/fields/photo.js +410 -410
- package/dist/core/fields/richText.d.ts +294 -294
- package/dist/core/fields/richText.d.ts.map +1 -1
- package/dist/core/fields/richText.js +338 -338
- package/dist/core/fields/select.d.ts +365 -365
- package/dist/core/fields/select.d.ts.map +1 -1
- package/dist/core/fields/select.js +499 -499
- package/dist/core/fields/selectMultiple.d.ts +235 -235
- package/dist/core/fields/selectMultiple.d.ts.map +1 -1
- package/dist/core/fields/selectMultiple.js +417 -417
- package/dist/core/fields/tags.d.ts +130 -130
- package/dist/core/fields/tags.d.ts.map +1 -1
- package/dist/core/fields/tags.js +105 -105
- package/dist/core/fields/text.d.ts +135 -135
- package/dist/core/fields/text.d.ts.map +1 -1
- package/dist/core/fields/text.js +157 -157
- package/dist/core/fields/textArea.d.ts +106 -106
- package/dist/core/fields/textArea.d.ts.map +1 -1
- package/dist/core/fields/textArea.js +126 -126
- package/dist/core/fields/video.d.ts +147 -147
- package/dist/core/fields/video.d.ts.map +1 -1
- package/dist/core/fields/video.js +248 -248
- package/dist/core/helpers/entity.d.ts +7 -7
- package/dist/core/helpers/entity.js +27 -27
- package/dist/core/helpers/index.d.ts +4 -4
- package/dist/core/helpers/index.d.ts.map +1 -1
- package/dist/core/helpers/index.js +3 -3
- package/dist/core/index.d.ts +7 -7
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +7 -7
- package/dist/core/sections/category.d.ts +282 -282
- package/dist/core/sections/category.d.ts.map +1 -1
- package/dist/core/sections/category.js +147 -147
- package/dist/core/sections/hasItems.d.ts +631 -631
- package/dist/core/sections/hasItems.d.ts.map +1 -1
- package/dist/core/sections/hasItems.js +144 -144
- package/dist/core/sections/index.d.ts +4 -4
- package/dist/core/sections/index.d.ts.map +1 -1
- package/dist/core/sections/index.js +4 -4
- package/dist/core/sections/section.d.ts +225 -225
- package/dist/core/sections/section.d.ts.map +1 -1
- package/dist/core/sections/section.js +341 -341
- package/dist/core/sections/simple.d.ts +98 -98
- package/dist/core/sections/simple.d.ts.map +1 -1
- package/dist/core/sections/simple.js +95 -95
- package/dist/core/security/dom.d.ts +10 -10
- package/dist/core/security/dom.js +92 -92
- package/dist/core/submit/ItemEditSubmit.d.ts +75 -75
- package/dist/core/submit/ItemEditSubmit.js +186 -186
- package/dist/core/submit/NewItemSubmit.d.ts +13 -13
- package/dist/core/submit/NewItemSubmit.js +93 -93
- package/dist/core/submit/SimpleSectionSubmit.d.ts +12 -12
- package/dist/core/submit/SimpleSectionSubmit.js +93 -93
- package/dist/core/submit/index.d.ts +4 -4
- package/dist/core/submit/index.js +4 -4
- package/dist/core/submit/submit.d.ts +115 -115
- package/dist/core/submit/submit.js +479 -479
- package/dist/core/types/index.d.ts +279 -279
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/index.js +1 -1
- package/dist/db/client.d.ts +8 -8
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +19 -19
- package/dist/db/config.d.ts +5 -5
- package/dist/db/config.js +22 -22
- package/dist/db/drizzle.config.d.ts +5 -5
- package/dist/db/drizzle.config.js +18 -18
- package/dist/db/index.d.ts +2 -2
- package/dist/db/index.js +3 -3
- package/dist/db/schema.d.ts +638 -638
- package/dist/db/schema.js +73 -73
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -7
- package/dist/translations/index.d.ts +2 -2
- package/dist/translations/index.js +15 -15
- package/dist/utils/CpanelApi.d.ts +24 -24
- package/dist/utils/CpanelApi.js +64 -64
- package/dist/utils/constants.d.ts +13 -13
- package/dist/utils/constants.js +61 -61
- package/dist/utils/index.d.ts +4 -4
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -4
- package/dist/utils/utils.d.ts +59 -59
- package/dist/utils/utils.js +132 -132
- package/dist/validators/checkbox.d.ts +3 -3
- package/dist/validators/checkbox.d.ts.map +1 -1
- package/dist/validators/checkbox.js +12 -12
- package/dist/validators/color.d.ts +3 -3
- package/dist/validators/color.d.ts.map +1 -1
- package/dist/validators/color.js +7 -7
- package/dist/validators/date.d.ts +3 -3
- package/dist/validators/date.d.ts.map +1 -1
- package/dist/validators/date.js +5 -5
- package/dist/validators/document.d.ts +3 -3
- package/dist/validators/document.d.ts.map +1 -1
- package/dist/validators/document.js +57 -57
- package/dist/validators/index.d.ts +14 -14
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/index.js +14 -14
- package/dist/validators/map.d.ts +3 -3
- package/dist/validators/map.d.ts.map +1 -1
- package/dist/validators/map.js +5 -5
- package/dist/validators/number.d.ts +3 -3
- package/dist/validators/number.d.ts.map +1 -1
- package/dist/validators/number.js +20 -20
- package/dist/validators/password.d.ts +3 -3
- package/dist/validators/password.d.ts.map +1 -1
- package/dist/validators/password.js +11 -11
- package/dist/validators/photo.d.ts +3 -3
- package/dist/validators/photo.d.ts.map +1 -1
- package/dist/validators/photo.js +100 -100
- package/dist/validators/richText.d.ts +3 -3
- package/dist/validators/richText.d.ts.map +1 -1
- package/dist/validators/richText.js +8 -8
- package/dist/validators/select-multiple.d.ts +9 -9
- package/dist/validators/select-multiple.d.ts.map +1 -1
- package/dist/validators/select-multiple.js +20 -20
- package/dist/validators/select.d.ts +3 -3
- package/dist/validators/select.d.ts.map +1 -1
- package/dist/validators/select.js +5 -5
- package/dist/validators/text.d.ts +3 -3
- package/dist/validators/text.d.ts.map +1 -1
- package/dist/validators/text.js +7 -7
- package/dist/validators/textarea.d.ts +3 -3
- package/dist/validators/textarea.d.ts.map +1 -1
- package/dist/validators/textarea.js +7 -7
- package/dist/validators/video.d.ts +3 -3
- package/dist/validators/video.d.ts.map +1 -1
- package/dist/validators/video.js +57 -57
- package/package.json +2 -3
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
import type { SQL } from 'drizzle-orm';
|
|
2
|
-
import type { Field } from
|
|
3
|
-
import { Submit } from
|
|
4
|
-
import { entityKind } from
|
|
5
|
-
import type { User } from
|
|
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
|
|
3
|
-
import { Submit } from
|
|
4
|
-
import { FileField } from
|
|
5
|
-
import { entityKind, is } from
|
|
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
|
|
3
|
-
import { entityKind } from
|
|
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
|