next-anvil 0.1.0 → 0.2.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.
- package/dist/bin/templates/resource.js +4 -4
- package/dist/src/actions.d.ts +44 -0
- package/dist/src/actions.d.ts.map +1 -0
- package/dist/src/actions.js +328 -0
- package/dist/src/actions.js.map +1 -0
- package/dist/src/fields/date.d.ts +16 -0
- package/dist/src/fields/date.d.ts.map +1 -0
- package/dist/src/fields/date.js +17 -0
- package/dist/src/fields/date.js.map +1 -0
- package/dist/src/fields/email.d.ts +16 -0
- package/dist/src/fields/email.d.ts.map +1 -0
- package/dist/src/fields/email.js +15 -0
- package/dist/src/fields/email.js.map +1 -0
- package/dist/src/fields/hidden.d.ts +9 -0
- package/dist/src/fields/hidden.d.ts.map +1 -0
- package/dist/src/fields/hidden.js +10 -0
- package/dist/src/fields/hidden.js.map +1 -0
- package/dist/src/fields/index.d.ts +8 -0
- package/dist/src/fields/index.d.ts.map +1 -0
- package/dist/src/fields/index.js +24 -0
- package/dist/src/fields/index.js.map +1 -0
- package/dist/src/fields/number.d.ts +17 -0
- package/dist/src/fields/number.d.ts.map +1 -0
- package/dist/src/fields/number.js +16 -0
- package/dist/src/fields/number.js.map +1 -0
- package/dist/src/fields/select.d.ts +20 -0
- package/dist/src/fields/select.d.ts.map +1 -0
- package/dist/src/fields/select.js +15 -0
- package/dist/src/fields/select.js.map +1 -0
- package/dist/src/fields/text.d.ts +19 -0
- package/dist/src/fields/text.d.ts.map +1 -0
- package/dist/src/fields/text.js +17 -0
- package/dist/src/fields/text.js.map +1 -0
- package/dist/src/fields/textarea.d.ts +19 -0
- package/dist/src/fields/textarea.d.ts.map +1 -0
- package/dist/src/fields/textarea.js +17 -0
- package/dist/src/fields/textarea.js.map +1 -0
- package/dist/src/fields/types.d.ts +41 -0
- package/dist/src/fields/types.d.ts.map +1 -0
- package/dist/src/fields/types.js +3 -0
- package/dist/src/fields/types.js.map +1 -0
- package/dist/src/fields.d.ts +56 -0
- package/dist/src/fields.d.ts.map +1 -0
- package/dist/src/fields.js +86 -0
- package/dist/src/fields.js.map +1 -0
- package/dist/src/form.d.ts +7 -0
- package/dist/src/form.d.ts.map +1 -0
- package/dist/src/form.js +7 -0
- package/dist/src/form.js.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +24 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/resource.d.ts +21 -0
- package/dist/src/resource.d.ts.map +1 -0
- package/dist/src/resource.js +28 -0
- package/dist/src/resource.js.map +1 -0
- package/dist/src/table.d.ts +11 -0
- package/dist/src/table.d.ts.map +1 -0
- package/dist/src/table.js +7 -0
- package/dist/src/table.js.map +1 -0
- package/dist/src/types.d.ts +55 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +6 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +7 -1
|
@@ -5,7 +5,7 @@ exports.formTemplate = formTemplate;
|
|
|
5
5
|
exports.tableTemplate = tableTemplate;
|
|
6
6
|
function indexTemplate(singular) {
|
|
7
7
|
return `
|
|
8
|
-
import { defineResource } from "
|
|
8
|
+
import { defineResource } from "next-anvil/resource";
|
|
9
9
|
import form from "./form";
|
|
10
10
|
import table from "./table";
|
|
11
11
|
|
|
@@ -18,8 +18,8 @@ export default defineResource({
|
|
|
18
18
|
}
|
|
19
19
|
function formTemplate(singular) {
|
|
20
20
|
return `
|
|
21
|
-
import { defineFormSchema } from "
|
|
22
|
-
import { text } from "
|
|
21
|
+
import { defineFormSchema } from "next-anvil/form";
|
|
22
|
+
import { text } from "next-anvil/fields";
|
|
23
23
|
|
|
24
24
|
export default defineFormSchema({
|
|
25
25
|
fields: {
|
|
@@ -34,7 +34,7 @@ export default defineFormSchema({
|
|
|
34
34
|
}
|
|
35
35
|
function tableTemplate() {
|
|
36
36
|
return `
|
|
37
|
-
import { defineTableSchema } from "
|
|
37
|
+
import { defineTableSchema } from "next-anvil/table";
|
|
38
38
|
|
|
39
39
|
export default defineTableSchema({
|
|
40
40
|
columns: [
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic CRUD server actions for resources
|
|
3
|
+
*/
|
|
4
|
+
import type { PrismaClient } from "@prisma/client";
|
|
5
|
+
import type { AnvilResource } from "./resource";
|
|
6
|
+
/**
|
|
7
|
+
* Set the Prisma client instance to use for all actions
|
|
8
|
+
* Call this in your app initialization or in a setup file
|
|
9
|
+
*/
|
|
10
|
+
export declare function setPrismaClient(client: PrismaClient): void;
|
|
11
|
+
export interface ActionError {
|
|
12
|
+
field?: string;
|
|
13
|
+
message: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ActionResult<T = any> {
|
|
16
|
+
success: boolean;
|
|
17
|
+
data?: T;
|
|
18
|
+
errors?: ActionError[];
|
|
19
|
+
}
|
|
20
|
+
export interface ResourceRecord {
|
|
21
|
+
id: number | string;
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* List all records for a resource
|
|
26
|
+
*/
|
|
27
|
+
export declare function listRecords(resource: AnvilResource): Promise<ResourceRecord[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Get a single record by ID
|
|
30
|
+
*/
|
|
31
|
+
export declare function getRecord(resource: AnvilResource, id: number | string): Promise<ResourceRecord | null>;
|
|
32
|
+
/**
|
|
33
|
+
* Create a new record
|
|
34
|
+
*/
|
|
35
|
+
export declare function createRecord(resource: AnvilResource, data: Record<string, any>): Promise<ActionResult<any>>;
|
|
36
|
+
/**
|
|
37
|
+
* Update an existing record
|
|
38
|
+
*/
|
|
39
|
+
export declare function updateRecord(resource: AnvilResource, id: number | string, data: Record<string, any>): Promise<ActionResult<ResourceRecord>>;
|
|
40
|
+
/**
|
|
41
|
+
* Delete a record
|
|
42
|
+
*/
|
|
43
|
+
export declare function deleteRecord(resource: AnvilResource, id: number | string): Promise<ActionResult>;
|
|
44
|
+
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/actions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMhD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,QAEnD;AA0CD,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,cAAc,EAAE,CAAC,CAc3B;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,aAAa,EACvB,EAAE,EAAE,MAAM,GAAG,MAAM,GAClB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAchC;AAsJD;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAmD5B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,aAAa,EACvB,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAyDvC;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,aAAa,EACvB,EAAE,EAAE,MAAM,GAAG,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CAgBvB"}
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Generic CRUD server actions for resources
|
|
4
|
+
*/
|
|
5
|
+
"use server";
|
|
6
|
+
/**
|
|
7
|
+
* Generic CRUD server actions for resources
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.setPrismaClient = setPrismaClient;
|
|
11
|
+
exports.listRecords = listRecords;
|
|
12
|
+
exports.getRecord = getRecord;
|
|
13
|
+
exports.createRecord = createRecord;
|
|
14
|
+
exports.updateRecord = updateRecord;
|
|
15
|
+
exports.deleteRecord = deleteRecord;
|
|
16
|
+
// Prisma client instance - developers should configure this
|
|
17
|
+
// by calling setPrismaClient() or by having @/lib/prisma export it
|
|
18
|
+
let prisma = null;
|
|
19
|
+
/**
|
|
20
|
+
* Set the Prisma client instance to use for all actions
|
|
21
|
+
* Call this in your app initialization or in a setup file
|
|
22
|
+
*/
|
|
23
|
+
function setPrismaClient(client) {
|
|
24
|
+
prisma = client;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get the Prisma client instance
|
|
28
|
+
* Tries to import from @/lib/prisma if not set explicitly
|
|
29
|
+
*/
|
|
30
|
+
function getPrismaClient() {
|
|
31
|
+
if (prisma) {
|
|
32
|
+
return prisma;
|
|
33
|
+
}
|
|
34
|
+
// Try to import from the developer's project structure
|
|
35
|
+
try {
|
|
36
|
+
// Dynamic import to avoid build-time errors if @/lib/prisma doesn't exist
|
|
37
|
+
const prismaModule = require("@/lib/prisma");
|
|
38
|
+
const client = prismaModule.prisma || prismaModule.default;
|
|
39
|
+
if (client) {
|
|
40
|
+
prisma = client;
|
|
41
|
+
return prisma;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// @/lib/prisma doesn't exist or can't be resolved
|
|
46
|
+
}
|
|
47
|
+
// Last resort: try to import @prisma/client directly
|
|
48
|
+
// This will work if the developer has installed it
|
|
49
|
+
try {
|
|
50
|
+
const { PrismaClient: PrismaClientConstructor } = require("@prisma/client");
|
|
51
|
+
prisma = new PrismaClientConstructor();
|
|
52
|
+
console.warn("[Anvil] Using default PrismaClient instance. Consider calling setPrismaClient() or exporting prisma from @/lib/prisma");
|
|
53
|
+
return prisma;
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
throw new Error("Prisma client not found. Please install @prisma/client and either:\n" +
|
|
57
|
+
"1. Call setPrismaClient() with your PrismaClient instance, or\n" +
|
|
58
|
+
"2. Export your prisma client from @/lib/prisma");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* List all records for a resource
|
|
63
|
+
*/
|
|
64
|
+
async function listRecords(resource) {
|
|
65
|
+
const prismaClient = getPrismaClient();
|
|
66
|
+
const model = resource.model;
|
|
67
|
+
const modelClient = prismaClient[model];
|
|
68
|
+
if (!modelClient || typeof modelClient.findMany !== "function") {
|
|
69
|
+
throw new Error(`Model ${resource.model} not found in Prisma client`);
|
|
70
|
+
}
|
|
71
|
+
const records = await modelClient.findMany({
|
|
72
|
+
orderBy: { id: "desc" },
|
|
73
|
+
});
|
|
74
|
+
return records;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get a single record by ID
|
|
78
|
+
*/
|
|
79
|
+
async function getRecord(resource, id) {
|
|
80
|
+
const prismaClient = getPrismaClient();
|
|
81
|
+
const model = resource.model;
|
|
82
|
+
const modelClient = prismaClient[model];
|
|
83
|
+
if (!modelClient || typeof modelClient.findUnique !== "function") {
|
|
84
|
+
throw new Error(`Model ${resource.model} not found in Prisma client`);
|
|
85
|
+
}
|
|
86
|
+
const record = await modelClient.findUnique({
|
|
87
|
+
where: { id: Number(id) },
|
|
88
|
+
});
|
|
89
|
+
return record;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Validate form data against resource definition
|
|
93
|
+
*/
|
|
94
|
+
function validateFormData(resource, data, isUpdate = false) {
|
|
95
|
+
const errors = [];
|
|
96
|
+
// Use form for create, editForm for update
|
|
97
|
+
const formFields = isUpdate ? resource.editForm.fields : resource.form.fields;
|
|
98
|
+
for (const [fieldName, fieldConfig] of Object.entries(formFields)) {
|
|
99
|
+
const value = data[fieldName];
|
|
100
|
+
// Skip hidden fields
|
|
101
|
+
if (fieldConfig.type === "hidden") {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
// Skip validation for read-only fields on create
|
|
105
|
+
if ("readOnly" in fieldConfig && fieldConfig.readOnly && !isUpdate) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
// Required validation
|
|
109
|
+
if ("required" in fieldConfig &&
|
|
110
|
+
fieldConfig.required &&
|
|
111
|
+
(value === null || value === undefined || value === "")) {
|
|
112
|
+
const label = "label" in fieldConfig ? fieldConfig.label : fieldName;
|
|
113
|
+
errors.push({
|
|
114
|
+
field: fieldName,
|
|
115
|
+
message: `${label} is required`,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
// Type-specific validation
|
|
119
|
+
if (value !== null && value !== undefined && value !== "") {
|
|
120
|
+
if (fieldConfig.type === "email") {
|
|
121
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
122
|
+
if (!emailRegex.test(value)) {
|
|
123
|
+
errors.push({
|
|
124
|
+
field: fieldName,
|
|
125
|
+
message: `${fieldConfig.label || fieldName} must be a valid email`,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (fieldConfig.type === "text" && "minLength" in fieldConfig) {
|
|
130
|
+
if (fieldConfig.minLength && value.length < fieldConfig.minLength) {
|
|
131
|
+
errors.push({
|
|
132
|
+
field: fieldName,
|
|
133
|
+
message: `${fieldConfig.label || fieldName} must be at least ${fieldConfig.minLength} characters`,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (fieldConfig.type === "text" && "maxLength" in fieldConfig) {
|
|
138
|
+
if (fieldConfig.maxLength && value.length > fieldConfig.maxLength) {
|
|
139
|
+
errors.push({
|
|
140
|
+
field: fieldName,
|
|
141
|
+
message: `${fieldConfig.label || fieldName} must be no more than ${fieldConfig.maxLength} characters`,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (fieldConfig.type === "number" && "min" in fieldConfig) {
|
|
146
|
+
if (fieldConfig.min !== undefined && Number(value) < fieldConfig.min) {
|
|
147
|
+
errors.push({
|
|
148
|
+
field: fieldName,
|
|
149
|
+
message: `${fieldConfig.label || fieldName} must be at least ${fieldConfig.min}`,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (fieldConfig.type === "number" && "max" in fieldConfig) {
|
|
154
|
+
if (fieldConfig.max !== undefined && Number(value) > fieldConfig.max) {
|
|
155
|
+
errors.push({
|
|
156
|
+
field: fieldName,
|
|
157
|
+
message: `${fieldConfig.label || fieldName} must be no more than ${fieldConfig.max}`,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return errors;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Transform form data based on field types
|
|
167
|
+
* Converts date strings to Date objects for Prisma
|
|
168
|
+
*/
|
|
169
|
+
function transformFormData(resource, data, isUpdate = false) {
|
|
170
|
+
const formFields = isUpdate ? resource.editForm.fields : resource.form.fields;
|
|
171
|
+
const transformed = {};
|
|
172
|
+
for (const [fieldName, fieldConfig] of Object.entries(formFields)) {
|
|
173
|
+
if (fieldConfig.type === "hidden") {
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
if (!("readOnly" in fieldConfig && fieldConfig.readOnly) &&
|
|
177
|
+
data[fieldName] !== undefined &&
|
|
178
|
+
data[fieldName] !== null &&
|
|
179
|
+
data[fieldName] !== "") {
|
|
180
|
+
// Convert date strings to Date objects
|
|
181
|
+
if (fieldConfig.type === "date") {
|
|
182
|
+
const dateValue = data[fieldName];
|
|
183
|
+
// If it's already a Date object, use it
|
|
184
|
+
if (dateValue instanceof Date) {
|
|
185
|
+
transformed[fieldName] = dateValue;
|
|
186
|
+
}
|
|
187
|
+
else if (typeof dateValue === "string") {
|
|
188
|
+
// Convert "YYYY-MM-DD" to Date object
|
|
189
|
+
// Add time component to make it a valid DateTime
|
|
190
|
+
const date = new Date(dateValue + "T00:00:00.000Z");
|
|
191
|
+
if (!isNaN(date.getTime())) {
|
|
192
|
+
transformed[fieldName] = date;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
transformed[fieldName] = data[fieldName];
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
else if (data[fieldName] === "" && fieldConfig.type === "date") {
|
|
201
|
+
// Handle empty date strings - set to null
|
|
202
|
+
transformed[fieldName] = null;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return transformed;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Create a new record
|
|
209
|
+
*/
|
|
210
|
+
async function createRecord(resource, data) {
|
|
211
|
+
// Validate
|
|
212
|
+
const errors = validateFormData(resource, data, false);
|
|
213
|
+
if (errors.length > 0) {
|
|
214
|
+
return { success: false, errors };
|
|
215
|
+
}
|
|
216
|
+
// Check unique constraints
|
|
217
|
+
for (const [fieldName, fieldConfig] of Object.entries(resource.form.fields)) {
|
|
218
|
+
if (fieldConfig.type === "email" || fieldConfig.type === "text") {
|
|
219
|
+
if (fieldConfig.unique && data[fieldName]) {
|
|
220
|
+
const model = resource.model;
|
|
221
|
+
const modelClient = prisma[model];
|
|
222
|
+
const existing = await modelClient.findFirst({
|
|
223
|
+
where: { [fieldName]: data[fieldName] },
|
|
224
|
+
});
|
|
225
|
+
if (existing) {
|
|
226
|
+
return {
|
|
227
|
+
success: false,
|
|
228
|
+
errors: [
|
|
229
|
+
{
|
|
230
|
+
field: fieldName,
|
|
231
|
+
message: `${fieldConfig.label || fieldName} must be unique`,
|
|
232
|
+
},
|
|
233
|
+
],
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// Transform and prepare data (exclude read-only and hidden fields)
|
|
240
|
+
const transformedData = transformFormData(resource, data, false);
|
|
241
|
+
try {
|
|
242
|
+
const model = resource.model;
|
|
243
|
+
const modelClient = prisma[model];
|
|
244
|
+
const record = await modelClient.create({
|
|
245
|
+
data: transformedData,
|
|
246
|
+
});
|
|
247
|
+
return { success: true, data: record };
|
|
248
|
+
}
|
|
249
|
+
catch (error) {
|
|
250
|
+
return {
|
|
251
|
+
success: false,
|
|
252
|
+
errors: [{ message: error.message || "Failed to create record" }],
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Update an existing record
|
|
258
|
+
*/
|
|
259
|
+
async function updateRecord(resource, id, data) {
|
|
260
|
+
// Validate
|
|
261
|
+
const errors = validateFormData(resource, data, true);
|
|
262
|
+
if (errors.length > 0) {
|
|
263
|
+
return { success: false, errors };
|
|
264
|
+
}
|
|
265
|
+
// Check unique constraints (excluding current record)
|
|
266
|
+
for (const [fieldName, fieldConfig] of Object.entries(resource.editForm.fields)) {
|
|
267
|
+
if (fieldConfig.type === "email" || fieldConfig.type === "text") {
|
|
268
|
+
if (fieldConfig.unique && data[fieldName]) {
|
|
269
|
+
const model = resource.model;
|
|
270
|
+
const modelClient = prisma[model];
|
|
271
|
+
const existing = await modelClient.findFirst({
|
|
272
|
+
where: {
|
|
273
|
+
[fieldName]: data[fieldName],
|
|
274
|
+
NOT: { id: Number(id) },
|
|
275
|
+
},
|
|
276
|
+
});
|
|
277
|
+
if (existing) {
|
|
278
|
+
return {
|
|
279
|
+
success: false,
|
|
280
|
+
errors: [
|
|
281
|
+
{
|
|
282
|
+
field: fieldName,
|
|
283
|
+
message: `${fieldConfig.label || fieldName} must be unique`,
|
|
284
|
+
},
|
|
285
|
+
],
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// Transform and prepare data (exclude read-only and hidden fields on update)
|
|
292
|
+
const transformedData = transformFormData(resource, data, true);
|
|
293
|
+
try {
|
|
294
|
+
const model = resource.model;
|
|
295
|
+
const modelClient = prisma[model];
|
|
296
|
+
const record = await modelClient.update({
|
|
297
|
+
where: { id: Number(id) },
|
|
298
|
+
data: transformedData,
|
|
299
|
+
});
|
|
300
|
+
return { success: true, data: record };
|
|
301
|
+
}
|
|
302
|
+
catch (error) {
|
|
303
|
+
return {
|
|
304
|
+
success: false,
|
|
305
|
+
errors: [{ message: error.message || "Failed to update record" }],
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Delete a record
|
|
311
|
+
*/
|
|
312
|
+
async function deleteRecord(resource, id) {
|
|
313
|
+
try {
|
|
314
|
+
const model = resource.model;
|
|
315
|
+
const modelClient = prisma[model];
|
|
316
|
+
await modelClient.delete({
|
|
317
|
+
where: { id: Number(id) },
|
|
318
|
+
});
|
|
319
|
+
return { success: true };
|
|
320
|
+
}
|
|
321
|
+
catch (error) {
|
|
322
|
+
return {
|
|
323
|
+
success: false,
|
|
324
|
+
errors: [{ message: error.message || "Failed to delete record" }],
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseFieldOptions } from "./types";
|
|
2
|
+
export interface DateFieldOptions extends BaseFieldOptions {
|
|
3
|
+
minDate?: Date;
|
|
4
|
+
maxDate?: Date;
|
|
5
|
+
}
|
|
6
|
+
export interface DateFieldSchema {
|
|
7
|
+
type: "date";
|
|
8
|
+
label: string;
|
|
9
|
+
required: boolean;
|
|
10
|
+
readOnly: boolean;
|
|
11
|
+
minDate: Date;
|
|
12
|
+
maxDate: Date;
|
|
13
|
+
size: DateFieldOptions["size"];
|
|
14
|
+
}
|
|
15
|
+
export declare function date(options: DateFieldOptions): DateFieldSchema;
|
|
16
|
+
//# sourceMappingURL=date.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../../src/fields/date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACtD,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;CAClC;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAY7D"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.date = date;
|
|
4
|
+
function date(options) {
|
|
5
|
+
const minDate = options.minDate ? options.minDate : new Date(1900, 0, 1);
|
|
6
|
+
const maxDate = options.maxDate ? options.maxDate : new Date(2100, 0, 1);
|
|
7
|
+
return {
|
|
8
|
+
type: "date",
|
|
9
|
+
label: options.label,
|
|
10
|
+
required: options?.required ?? false,
|
|
11
|
+
readOnly: options?.readOnly ?? false,
|
|
12
|
+
size: options?.size ?? "medium",
|
|
13
|
+
minDate: minDate,
|
|
14
|
+
maxDate: maxDate,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../src/fields/date.ts"],"names":[],"mappings":";;AAiBA,oBAYG;AAZH,SAAgB,IAAI,CAAC,OAAyB;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,KAAK;QACpC,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,KAAK;QACpC,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,QAAQ;QAC/B,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,OAAO;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseFieldOptions } from "./types";
|
|
2
|
+
export interface EmailFieldOptions extends BaseFieldOptions {
|
|
3
|
+
type: "email";
|
|
4
|
+
unique?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface EmailFieldSchema {
|
|
7
|
+
type: "email";
|
|
8
|
+
label: string;
|
|
9
|
+
required: boolean;
|
|
10
|
+
readOnly: boolean;
|
|
11
|
+
unique: boolean;
|
|
12
|
+
placeholder: string;
|
|
13
|
+
size: EmailFieldOptions["size"];
|
|
14
|
+
}
|
|
15
|
+
export declare function email(options: EmailFieldOptions): EmailFieldSchema;
|
|
16
|
+
//# sourceMappingURL=email.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/fields/email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACvD,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;CACjC;AAEH,wBAAgB,KAAK,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAUhE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.email = email;
|
|
4
|
+
function email(options) {
|
|
5
|
+
return {
|
|
6
|
+
type: "email",
|
|
7
|
+
label: options.label,
|
|
8
|
+
required: options.required ?? false,
|
|
9
|
+
readOnly: options.readOnly ?? false,
|
|
10
|
+
unique: options.unique ?? false,
|
|
11
|
+
placeholder: options.placeholder ?? "",
|
|
12
|
+
size: options.size ?? "medium",
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=email.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../../src/fields/email.ts"],"names":[],"mappings":";;AAiBA,sBAUG;AAVH,SAAgB,KAAK,CAAC,OAA0B;IAC5C,OAAO;QACL,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;QACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;QACnC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;QACtC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,QAAQ;KAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hidden.d.ts","sourceRoot":"","sources":["../../../src/fields/hidden.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CAKnE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hidden.js","sourceRoot":"","sources":["../../../src/fields/hidden.ts"],"names":[],"mappings":";;AASA,wBAKG;AALH,SAAgB,MAAM,CAAC,OAA2B;IAC9C,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./date"), exports);
|
|
18
|
+
__exportStar(require("./email"), exports);
|
|
19
|
+
__exportStar(require("./hidden"), exports);
|
|
20
|
+
__exportStar(require("./number"), exports);
|
|
21
|
+
__exportStar(require("./select"), exports);
|
|
22
|
+
__exportStar(require("./text"), exports);
|
|
23
|
+
__exportStar(require("./textarea"), exports);
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/fields/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,0CAAwB;AACxB,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,yCAAuB;AACvB,6CAA2B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseFieldOptions } from "./types";
|
|
2
|
+
export interface NumberFieldOptions extends BaseFieldOptions {
|
|
3
|
+
min?: number;
|
|
4
|
+
max?: number;
|
|
5
|
+
}
|
|
6
|
+
export interface NumberFieldSchema {
|
|
7
|
+
type: "number";
|
|
8
|
+
label: string;
|
|
9
|
+
placeholder: string;
|
|
10
|
+
required: boolean;
|
|
11
|
+
readOnly: boolean;
|
|
12
|
+
min?: number;
|
|
13
|
+
max?: number;
|
|
14
|
+
size: NumberFieldOptions["size"];
|
|
15
|
+
}
|
|
16
|
+
export declare function number(options: NumberFieldOptions): NumberFieldSchema;
|
|
17
|
+
//# sourceMappingURL=number.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../../src/fields/number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAEH,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;CAClC;AAEH,wBAAgB,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CAWnE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.number = number;
|
|
4
|
+
function number(options) {
|
|
5
|
+
return {
|
|
6
|
+
type: "number",
|
|
7
|
+
label: options.label,
|
|
8
|
+
required: options?.required ?? false,
|
|
9
|
+
readOnly: options?.readOnly ?? false,
|
|
10
|
+
min: options?.min,
|
|
11
|
+
max: options?.max,
|
|
12
|
+
placeholder: options.placeholder ?? "",
|
|
13
|
+
size: options.size ?? "medium",
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=number.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../../src/fields/number.ts"],"names":[],"mappings":";;AAkBA,wBAWG;AAXH,SAAgB,MAAM,CAAC,OAA2B;IAC9C,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,KAAK;QACpC,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,KAAK;QACpC,GAAG,EAAE,OAAO,EAAE,GAAG;QACjB,GAAG,EAAE,OAAO,EAAE,GAAG;QACjB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;QACtC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,QAAQ;KAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BaseFieldOptions } from "./types";
|
|
2
|
+
type SelectOptions = {
|
|
3
|
+
label: string;
|
|
4
|
+
value: string;
|
|
5
|
+
}[] | string[];
|
|
6
|
+
export interface SelectFieldOptions extends BaseFieldOptions {
|
|
7
|
+
options: SelectOptions;
|
|
8
|
+
}
|
|
9
|
+
export interface SelectFieldSchema {
|
|
10
|
+
type: "select";
|
|
11
|
+
options: SelectOptions;
|
|
12
|
+
label: string;
|
|
13
|
+
required: boolean;
|
|
14
|
+
readOnly: boolean;
|
|
15
|
+
placeholder: string;
|
|
16
|
+
size: SelectFieldOptions["size"];
|
|
17
|
+
}
|
|
18
|
+
export declare function select(options: SelectFieldOptions): SelectFieldSchema;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/fields/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,KAAK,aAAa,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,EAAE,CAAC;AAEnE,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IACxD,OAAO,EAAE,aAAa,CAAC;CACxB;AAEH,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;CAClC;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CAUnE"}
|