@quatrain/app 1.1.6 → 1.1.8
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/CodeGenerator.d.ts +1 -0
- package/dist/CodeGenerator.d.ts.map +1 -1
- package/dist/CodeGenerator.js +99 -5
- package/dist/CodeGenerator.js.map +1 -1
- package/dist/Infra.d.ts +5 -1
- package/dist/Infra.d.ts.map +1 -1
- package/dist/Infra.js +19 -5
- package/dist/Infra.js.map +1 -1
- package/package.json +1 -1
- package/src/CodeGenerator.ts +106 -5
- package/src/Infra.ts +25 -6
package/dist/CodeGenerator.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeGenerator.d.ts","sourceRoot":"","sources":["../src/CodeGenerator.ts"],"names":[],"mappings":"AAIA,qBAAa,aAAa;WAIT,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IA+B5D,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAqClC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAiB/B,OAAO,CAAC,MAAM,CAAC,cAAc;
|
|
1
|
+
{"version":3,"file":"CodeGenerator.d.ts","sourceRoot":"","sources":["../src/CodeGenerator.ts"],"names":[],"mappings":"AAIA,qBAAa,aAAa;WAIT,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IA+B5D,OAAO,CAAC,MAAM,CAAC,kBAAkB;IA6EjC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAqClC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAiB/B,OAAO,CAAC,MAAM,CAAC,cAAc;IAwD7B,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAgBnC,OAAO,CAAC,MAAM,CAAC,aAAa;IAuD5B,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAmFhC,OAAO,CAAC,MAAM,CAAC,gBAAgB;CA+UjC"}
|
package/dist/CodeGenerator.js
CHANGED
|
@@ -63,6 +63,80 @@ class CodeGenerator {
|
|
|
63
63
|
this.generateFrontend(config, fullTargetDir, generatedModels);
|
|
64
64
|
log_1.Log.info(`[CodeGenerator] Application générée avec succès dans ${fullTargetDir}`);
|
|
65
65
|
}
|
|
66
|
+
static generateWidgetForm(modelConfig, widget) {
|
|
67
|
+
const m = modelConfig.name;
|
|
68
|
+
let layoutCode = '';
|
|
69
|
+
const properties = modelConfig.properties || [];
|
|
70
|
+
const getFieldCode = (fieldName) => {
|
|
71
|
+
const prop = properties.find((p) => p.name === fieldName);
|
|
72
|
+
let label = fieldName;
|
|
73
|
+
if (prop && prop.ui && prop.ui.labels) {
|
|
74
|
+
label = prop.ui.labels.fr || prop.ui.labels.en || fieldName;
|
|
75
|
+
}
|
|
76
|
+
return `<TextInput label="${label}" value={data.${fieldName} || ''} onChange={e => setData({...data, ${fieldName}: e.currentTarget.value})} />`;
|
|
77
|
+
};
|
|
78
|
+
if (Array.isArray(widget.layout)) {
|
|
79
|
+
widget.layout.forEach((item) => {
|
|
80
|
+
if (item.type === 'field' && item.name) {
|
|
81
|
+
layoutCode += ` ${getFieldCode(item.name)}\n`;
|
|
82
|
+
}
|
|
83
|
+
else if (item.type === 'group' && Array.isArray(item.fields)) {
|
|
84
|
+
layoutCode += ` <Group grow align="flex-start">\n`;
|
|
85
|
+
item.fields.forEach((f) => {
|
|
86
|
+
layoutCode += ` ${getFieldCode(f)}\n`;
|
|
87
|
+
});
|
|
88
|
+
layoutCode += ` </Group>\n`;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return `import { useEffect, useState } from 'react'
|
|
93
|
+
import { Group, TextInput, Button, Title, Stack } from '@mantine/core'
|
|
94
|
+
import { useNavigate, useParams } from 'react-router-dom'
|
|
95
|
+
import { api } from '../api'
|
|
96
|
+
|
|
97
|
+
export function ${m}Form() {
|
|
98
|
+
const { id } = useParams()
|
|
99
|
+
const navigate = useNavigate()
|
|
100
|
+
const [data, setData] = useState<any>({})
|
|
101
|
+
|
|
102
|
+
useEffect(() => {
|
|
103
|
+
if (id && id !== 'new') {
|
|
104
|
+
api.get('${m.toLowerCase()}s/' + id).then(res => {
|
|
105
|
+
if (res && res.data) setData(res.data)
|
|
106
|
+
})
|
|
107
|
+
}
|
|
108
|
+
}, [id])
|
|
109
|
+
|
|
110
|
+
const handleSave = async () => {
|
|
111
|
+
try {
|
|
112
|
+
if (id && id !== 'new') {
|
|
113
|
+
await api.patch('${m.toLowerCase()}s/' + id, data)
|
|
114
|
+
} else {
|
|
115
|
+
await api.post('${m.toLowerCase()}s', data)
|
|
116
|
+
}
|
|
117
|
+
navigate('/${m.toLowerCase()}s')
|
|
118
|
+
} catch (e) {
|
|
119
|
+
console.error(e)
|
|
120
|
+
alert("Erreur de sauvegarde")
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return (
|
|
125
|
+
<Stack gap="md" style={{ maxWidth: '800px', margin: '0 auto' }}>
|
|
126
|
+
<Title order={2}>{id === 'new' ? 'Créer' : 'Éditer'} ${m}</Title>
|
|
127
|
+
|
|
128
|
+
{/* --- Début du layout généré par le WidgetBuilder --- */}
|
|
129
|
+
${layoutCode} {/* --- Fin du layout --- */}
|
|
130
|
+
|
|
131
|
+
<Group mt="xl">
|
|
132
|
+
<Button onClick={handleSave}>Sauvegarder</Button>
|
|
133
|
+
<Button variant="default" onClick={() => navigate('/${m.toLowerCase()}s')}>Annuler</Button>
|
|
134
|
+
</Group>
|
|
135
|
+
</Stack>
|
|
136
|
+
)
|
|
137
|
+
}
|
|
138
|
+
`;
|
|
139
|
+
}
|
|
66
140
|
static generatePackageJson(config, targetDir) {
|
|
67
141
|
const packagePath = path.resolve(targetDir, 'package.json');
|
|
68
142
|
const targetNpmTag = 'latest-dev';
|
|
@@ -125,16 +199,19 @@ class CodeGenerator {
|
|
|
125
199
|
const formatted = type.charAt(0).toUpperCase() + type.slice(1);
|
|
126
200
|
return formatted.endsWith('Property') ? formatted : formatted + 'Property';
|
|
127
201
|
};
|
|
128
|
-
const
|
|
202
|
+
const basePropNames = ['name', 'status', 'createdBy', 'createdAt', 'updatedBy', 'updatedAt'];
|
|
203
|
+
const filteredProps = model.properties.filter((p) => !basePropNames.includes(p.name));
|
|
204
|
+
const propsCode = filteredProps.map((p) => {
|
|
129
205
|
const propClass = mapTypeToClass(p.type);
|
|
130
206
|
const htmlTypeLine = p.htmlType ? `,\n htmlType: '${p.htmlType}'` : '';
|
|
131
207
|
return ` {
|
|
132
208
|
name: '${p.name}',
|
|
133
209
|
type: ${propClass}.TYPE,
|
|
134
|
-
mandatory: ${p.
|
|
210
|
+
mandatory: ${p.mandatory ? 'true' : 'false'}${htmlTypeLine}
|
|
135
211
|
}`;
|
|
136
212
|
}).join(',\n');
|
|
137
|
-
const
|
|
213
|
+
const coreImports = new Set(filteredProps.map((p) => mapTypeToClass(p.type)));
|
|
214
|
+
const propTypesToImport = Array.from(coreImports);
|
|
138
215
|
const modelCode = `import { PersistedBaseObject } from '@quatrain/backend'
|
|
139
216
|
import { ${propTypesToImport.join(', ')} } from '@quatrain/core'
|
|
140
217
|
|
|
@@ -251,10 +328,19 @@ ${config.authMode === 'oauth' ? ` // Initialize OIDC Auth
|
|
|
251
328
|
'deletedby TEXT',
|
|
252
329
|
...customColumns
|
|
253
330
|
].join(',\n ');
|
|
331
|
+
let alterQueries = '';
|
|
332
|
+
customColumns.forEach((colDef) => {
|
|
333
|
+
alterQueries += `
|
|
334
|
+
try {
|
|
335
|
+
await adapter.rawQuery(\`ALTER TABLE ${collectionName} ADD COLUMN ${colDef}\`)
|
|
336
|
+
} catch (e) {
|
|
337
|
+
// Ignore error if column already exists
|
|
338
|
+
}\n`;
|
|
339
|
+
});
|
|
254
340
|
upQueries += `
|
|
255
341
|
await adapter.rawQuery(\`CREATE TABLE IF NOT EXISTS ${collectionName} (
|
|
256
342
|
${allColumns}
|
|
257
|
-
)\`)\n`;
|
|
343
|
+
)\`)\n${alterQueries}`;
|
|
258
344
|
downQueries += `
|
|
259
345
|
await adapter.rawQuery('DROP TABLE IF EXISTS ${collectionName}')\n`;
|
|
260
346
|
}
|
|
@@ -517,7 +603,14 @@ export function ${m}List() {
|
|
|
517
603
|
`;
|
|
518
604
|
fs.writeFileSync(path.join(pagesDir, `${m}List.tsx`), listTsx);
|
|
519
605
|
const modelSchemaStr = JSON.stringify(modelConfig, null, 3);
|
|
520
|
-
|
|
606
|
+
let formTsx = '';
|
|
607
|
+
const widgets = config.widgets || [];
|
|
608
|
+
const formWidget = widgets.find((w) => w.modelName === m && w.widgetType === 'form');
|
|
609
|
+
if (formWidget && Array.isArray(formWidget.layout) && formWidget.layout.length > 0) {
|
|
610
|
+
formTsx = this.generateWidgetForm(modelConfig, formWidget);
|
|
611
|
+
}
|
|
612
|
+
else {
|
|
613
|
+
formTsx = `import { CoreForm } from '@quatrain/ui-form-react'
|
|
521
614
|
import { useNavigate, useParams } from 'react-router-dom'
|
|
522
615
|
import { api } from '../api'
|
|
523
616
|
|
|
@@ -538,6 +631,7 @@ export function ${m}Form() {
|
|
|
538
631
|
)
|
|
539
632
|
}
|
|
540
633
|
`;
|
|
634
|
+
}
|
|
541
635
|
fs.writeFileSync(path.join(pagesDir, `${m}Form.tsx`), formTsx);
|
|
542
636
|
}
|
|
543
637
|
const dockerfile = `FROM node:22-alpine as builder
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeGenerator.js","sourceRoot":"","sources":["../src/CodeGenerator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CodeGenerator.js","sourceRoot":"","sources":["../src/CodeGenerator.ts"],"names":[],"mappings":"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"}
|
package/dist/Infra.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export declare class AppInfra {
|
|
2
|
-
static start(config: Record<string, any
|
|
2
|
+
static start(config: Record<string, any>, onProgress?: (event: {
|
|
3
|
+
step: string;
|
|
4
|
+
status: 'running' | 'success' | 'error';
|
|
5
|
+
message: string;
|
|
6
|
+
}) => void): Promise<void>;
|
|
3
7
|
static stop(config: Record<string, any>): Promise<void>;
|
|
4
8
|
private static getComposeCommand;
|
|
5
9
|
private static runCompose;
|
package/dist/Infra.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Infra.d.ts","sourceRoot":"","sources":["../src/Infra.ts"],"names":[],"mappings":"AAOA,qBAAa,QAAQ;WAME,KAAK,
|
|
1
|
+
{"version":3,"file":"Infra.d.ts","sourceRoot":"","sources":["../src/Infra.ts"],"names":[],"mappings":"AAOA,qBAAa,QAAQ;WAME,KAAK,CACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GACxG,OAAO,CAAC,IAAI,CAAC;WAuCI,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpE,OAAO,CAAC,MAAM,CAAC,iBAAiB;mBAKX,UAAU;CAmDjC"}
|
package/dist/Infra.js
CHANGED
|
@@ -11,7 +11,7 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
11
11
|
const InfraBuilder_1 = require("./InfraBuilder");
|
|
12
12
|
const CodeGenerator_1 = require("./CodeGenerator");
|
|
13
13
|
class AppInfra {
|
|
14
|
-
static async start(config) {
|
|
14
|
+
static async start(config, onProgress) {
|
|
15
15
|
try {
|
|
16
16
|
const targetDir = config.path || './app';
|
|
17
17
|
const fullTargetDir = path_1.default.resolve(process.cwd(), targetDir);
|
|
@@ -19,16 +19,24 @@ class AppInfra {
|
|
|
19
19
|
if (!fs_1.default.existsSync(fullTargetDir)) {
|
|
20
20
|
fs_1.default.mkdirSync(fullTargetDir, { recursive: true });
|
|
21
21
|
}
|
|
22
|
+
onProgress?.({ step: 'code', status: 'running', message: 'Génération du code source...' });
|
|
22
23
|
CodeGenerator_1.CodeGenerator.generate(config, targetDir);
|
|
24
|
+
onProgress?.({ step: 'code', status: 'success', message: 'Code source généré' });
|
|
25
|
+
onProgress?.({ step: 'infra', status: 'running', message: "Configuration de l'infrastructure..." });
|
|
23
26
|
const { compose, env, dockerfile } = InfraBuilder_1.InfraBuilder.build(config);
|
|
24
27
|
fs_1.default.writeFileSync(composeFile, compose, 'utf8');
|
|
25
28
|
fs_1.default.writeFileSync(path_1.default.resolve(fullTargetDir, '.env'), env, 'utf8');
|
|
26
29
|
fs_1.default.writeFileSync(path_1.default.resolve(fullTargetDir, 'Containerfile'), dockerfile, 'utf8');
|
|
27
30
|
log_1.Log.info(`[Infra] Dynamically generated compose.yaml and .env in ${fullTargetDir}`);
|
|
28
|
-
|
|
31
|
+
onProgress?.({ step: 'infra', status: 'success', message: 'Infrastructure configurée' });
|
|
32
|
+
onProgress?.({ step: 'compose', status: 'running', message: 'Démarrage des containers...' });
|
|
33
|
+
await this.runCompose('up -d --build', composeFile, onProgress);
|
|
34
|
+
onProgress?.({ step: 'compose', status: 'success', message: 'Containers démarrés' });
|
|
29
35
|
}
|
|
30
36
|
catch (e) {
|
|
31
37
|
log_1.Log.error(`[Infra] Failed to start infrastructure: ${e.message}`);
|
|
38
|
+
onProgress?.({ step: 'error', status: 'error', message: `Erreur: ${e.message}` });
|
|
39
|
+
throw e;
|
|
32
40
|
}
|
|
33
41
|
}
|
|
34
42
|
static async stop(config) {
|
|
@@ -45,7 +53,7 @@ class AppInfra {
|
|
|
45
53
|
static getComposeCommand() {
|
|
46
54
|
return 'podman compose';
|
|
47
55
|
}
|
|
48
|
-
static async runCompose(action, composeFile) {
|
|
56
|
+
static async runCompose(action, composeFile, onProgress) {
|
|
49
57
|
return new Promise((resolve, reject) => {
|
|
50
58
|
if (!fs_1.default.existsSync(composeFile)) {
|
|
51
59
|
log_1.Log.error(`[Infra] Compose file not found at: ${composeFile}`);
|
|
@@ -80,10 +88,16 @@ class AppInfra {
|
|
|
80
88
|
resolve();
|
|
81
89
|
});
|
|
82
90
|
if (child.stdout) {
|
|
83
|
-
child.stdout.on('data', (data) =>
|
|
91
|
+
child.stdout.on('data', (data) => {
|
|
92
|
+
const text = data.toString().trim();
|
|
93
|
+
console.log(text);
|
|
94
|
+
});
|
|
84
95
|
}
|
|
85
96
|
if (child.stderr) {
|
|
86
|
-
child.stderr.on('data', (data) =>
|
|
97
|
+
child.stderr.on('data', (data) => {
|
|
98
|
+
const text = data.toString().trim();
|
|
99
|
+
console.error(text);
|
|
100
|
+
});
|
|
87
101
|
}
|
|
88
102
|
});
|
|
89
103
|
}
|
package/dist/Infra.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Infra.js","sourceRoot":"","sources":["../src/Infra.ts"],"names":[],"mappings":";;;;;;AAAA,iDAAoC;AACpC,gDAAuB;AACvB,uCAAmC;AACnC,4CAAmB;AACnB,iDAA6C;AAC7C,mDAA+C;AAE/C,MAAa,QAAQ;IAMX,MAAM,CAAC,KAAK,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"Infra.js","sourceRoot":"","sources":["../src/Infra.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/CodeGenerator.ts
CHANGED
|
@@ -37,6 +37,83 @@ export class CodeGenerator {
|
|
|
37
37
|
Log.info(`[CodeGenerator] Application générée avec succès dans ${fullTargetDir}`)
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
private static generateWidgetForm(modelConfig: any, widget: any): string {
|
|
41
|
+
const m = modelConfig.name
|
|
42
|
+
let layoutCode = ''
|
|
43
|
+
|
|
44
|
+
const properties = modelConfig.properties || []
|
|
45
|
+
const getFieldCode = (fieldName: string) => {
|
|
46
|
+
const prop = properties.find((p:any) => p.name === fieldName)
|
|
47
|
+
let label = fieldName
|
|
48
|
+
if (prop && prop.ui && prop.ui.labels) {
|
|
49
|
+
label = prop.ui.labels.fr || prop.ui.labels.en || fieldName
|
|
50
|
+
}
|
|
51
|
+
return `<TextInput label="${label}" value={data.${fieldName} || ''} onChange={e => setData({...data, ${fieldName}: e.currentTarget.value})} />`
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (Array.isArray(widget.layout)) {
|
|
55
|
+
widget.layout.forEach((item: any) => {
|
|
56
|
+
if (item.type === 'field' && item.name) {
|
|
57
|
+
layoutCode += ` ${getFieldCode(item.name)}\n`
|
|
58
|
+
} else if (item.type === 'group' && Array.isArray(item.fields)) {
|
|
59
|
+
layoutCode += ` <Group grow align="flex-start">\n`
|
|
60
|
+
item.fields.forEach((f: string) => {
|
|
61
|
+
layoutCode += ` ${getFieldCode(f)}\n`
|
|
62
|
+
})
|
|
63
|
+
layoutCode += ` </Group>\n`
|
|
64
|
+
}
|
|
65
|
+
})
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return `import { useEffect, useState } from 'react'
|
|
69
|
+
import { Group, TextInput, Button, Title, Stack } from '@mantine/core'
|
|
70
|
+
import { useNavigate, useParams } from 'react-router-dom'
|
|
71
|
+
import { api } from '../api'
|
|
72
|
+
|
|
73
|
+
export function ${m}Form() {
|
|
74
|
+
const { id } = useParams()
|
|
75
|
+
const navigate = useNavigate()
|
|
76
|
+
const [data, setData] = useState<any>({})
|
|
77
|
+
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
if (id && id !== 'new') {
|
|
80
|
+
api.get('${m.toLowerCase()}s/' + id).then(res => {
|
|
81
|
+
if (res && res.data) setData(res.data)
|
|
82
|
+
})
|
|
83
|
+
}
|
|
84
|
+
}, [id])
|
|
85
|
+
|
|
86
|
+
const handleSave = async () => {
|
|
87
|
+
try {
|
|
88
|
+
if (id && id !== 'new') {
|
|
89
|
+
await api.patch('${m.toLowerCase()}s/' + id, data)
|
|
90
|
+
} else {
|
|
91
|
+
await api.post('${m.toLowerCase()}s', data)
|
|
92
|
+
}
|
|
93
|
+
navigate('/${m.toLowerCase()}s')
|
|
94
|
+
} catch (e) {
|
|
95
|
+
console.error(e)
|
|
96
|
+
alert("Erreur de sauvegarde")
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return (
|
|
101
|
+
<Stack gap="md" style={{ maxWidth: '800px', margin: '0 auto' }}>
|
|
102
|
+
<Title order={2}>{id === 'new' ? 'Créer' : 'Éditer'} ${m}</Title>
|
|
103
|
+
|
|
104
|
+
{/* --- Début du layout généré par le WidgetBuilder --- */}
|
|
105
|
+
${layoutCode} {/* --- Fin du layout --- */}
|
|
106
|
+
|
|
107
|
+
<Group mt="xl">
|
|
108
|
+
<Button onClick={handleSave}>Sauvegarder</Button>
|
|
109
|
+
<Button variant="default" onClick={() => navigate('/${m.toLowerCase()}s')}>Annuler</Button>
|
|
110
|
+
</Group>
|
|
111
|
+
</Stack>
|
|
112
|
+
)
|
|
113
|
+
}
|
|
114
|
+
`
|
|
115
|
+
}
|
|
116
|
+
|
|
40
117
|
private static generatePackageJson(config: any, targetDir: string): void {
|
|
41
118
|
const packagePath = path.resolve(targetDir, 'package.json')
|
|
42
119
|
|
|
@@ -109,17 +186,21 @@ export class CodeGenerator {
|
|
|
109
186
|
}
|
|
110
187
|
|
|
111
188
|
// Use imports from core properties
|
|
112
|
-
const
|
|
189
|
+
const basePropNames = ['name', 'status', 'createdBy', 'createdAt', 'updatedBy', 'updatedAt']
|
|
190
|
+
const filteredProps = model.properties.filter((p: any) => !basePropNames.includes(p.name))
|
|
191
|
+
|
|
192
|
+
const propsCode = filteredProps.map((p: any) => {
|
|
113
193
|
const propClass = mapTypeToClass(p.type)
|
|
114
194
|
const htmlTypeLine = p.htmlType ? `,\n htmlType: '${p.htmlType}'` : ''
|
|
115
195
|
return ` {
|
|
116
196
|
name: '${p.name}',
|
|
117
197
|
type: ${propClass}.TYPE,
|
|
118
|
-
mandatory: ${p.
|
|
198
|
+
mandatory: ${p.mandatory ? 'true' : 'false'}${htmlTypeLine}
|
|
119
199
|
}`
|
|
120
200
|
}).join(',\n')
|
|
121
201
|
|
|
122
|
-
const
|
|
202
|
+
const coreImports = new Set(filteredProps.map((p: any) => mapTypeToClass(p.type)))
|
|
203
|
+
const propTypesToImport = Array.from(coreImports)
|
|
123
204
|
|
|
124
205
|
const modelCode = `import { PersistedBaseObject } from '@quatrain/backend'
|
|
125
206
|
import { ${propTypesToImport.join(', ')} } from '@quatrain/core'
|
|
@@ -248,10 +329,20 @@ ${config.authMode === 'oauth' ? ` // Initialize OIDC Auth
|
|
|
248
329
|
...customColumns
|
|
249
330
|
].join(',\n ')
|
|
250
331
|
|
|
332
|
+
let alterQueries = ''
|
|
333
|
+
customColumns.forEach((colDef: string) => {
|
|
334
|
+
alterQueries += `
|
|
335
|
+
try {
|
|
336
|
+
await adapter.rawQuery(\`ALTER TABLE ${collectionName} ADD COLUMN ${colDef}\`)
|
|
337
|
+
} catch (e) {
|
|
338
|
+
// Ignore error if column already exists
|
|
339
|
+
}\n`
|
|
340
|
+
})
|
|
341
|
+
|
|
251
342
|
upQueries += `
|
|
252
343
|
await adapter.rawQuery(\`CREATE TABLE IF NOT EXISTS ${collectionName} (
|
|
253
344
|
${allColumns}
|
|
254
|
-
)\`)\n`
|
|
345
|
+
)\`)\n${alterQueries}`
|
|
255
346
|
|
|
256
347
|
downQueries += `
|
|
257
348
|
await adapter.rawQuery('DROP TABLE IF EXISTS ${collectionName}')\n`
|
|
@@ -549,7 +640,16 @@ export function ${m}List() {
|
|
|
549
640
|
|
|
550
641
|
const modelSchemaStr = JSON.stringify(modelConfig, null, 3)
|
|
551
642
|
|
|
552
|
-
|
|
643
|
+
let formTsx = ''
|
|
644
|
+
const widgets = config.widgets || []
|
|
645
|
+
const formWidget = widgets.find((w: any) => w.modelName === m && w.widgetType === 'form')
|
|
646
|
+
|
|
647
|
+
if (formWidget && Array.isArray(formWidget.layout) && formWidget.layout.length > 0) {
|
|
648
|
+
// Utilisation du générateur natif de composants !
|
|
649
|
+
formTsx = this.generateWidgetForm(modelConfig, formWidget)
|
|
650
|
+
} else {
|
|
651
|
+
// Fallback historique sur CoreForm dynamique
|
|
652
|
+
formTsx = `import { CoreForm } from '@quatrain/ui-form-react'
|
|
553
653
|
import { useNavigate, useParams } from 'react-router-dom'
|
|
554
654
|
import { api } from '../api'
|
|
555
655
|
|
|
@@ -570,6 +670,7 @@ export function ${m}Form() {
|
|
|
570
670
|
)
|
|
571
671
|
}
|
|
572
672
|
`
|
|
673
|
+
}
|
|
573
674
|
fs.writeFileSync(path.join(pagesDir, `${m}Form.tsx`), formTsx)
|
|
574
675
|
}
|
|
575
676
|
|
package/src/Infra.ts
CHANGED
|
@@ -11,7 +11,10 @@ export class AppInfra {
|
|
|
11
11
|
* via podman-compose ou docker-compose
|
|
12
12
|
* Si une configuration est fournie, génère d'abord les fichiers compose.yaml et .env dans le dossier app/
|
|
13
13
|
*/
|
|
14
|
-
public static async start(
|
|
14
|
+
public static async start(
|
|
15
|
+
config: Record<string, any>,
|
|
16
|
+
onProgress?: (event: { step: string; status: 'running' | 'success' | 'error'; message: string }) => void
|
|
17
|
+
): Promise<void> {
|
|
15
18
|
try {
|
|
16
19
|
const targetDir = config.path || './app'
|
|
17
20
|
const fullTargetDir = path.resolve(process.cwd(), targetDir)
|
|
@@ -22,9 +25,12 @@ export class AppInfra {
|
|
|
22
25
|
}
|
|
23
26
|
|
|
24
27
|
// Generate Application Source Code
|
|
28
|
+
onProgress?.({ step: 'code', status: 'running', message: 'Génération du code source...' })
|
|
25
29
|
CodeGenerator.generate(config, targetDir)
|
|
30
|
+
onProgress?.({ step: 'code', status: 'success', message: 'Code source généré' })
|
|
26
31
|
|
|
27
32
|
// Generate Infrastructure configuration
|
|
33
|
+
onProgress?.({ step: 'infra', status: 'running', message: "Configuration de l'infrastructure..." })
|
|
28
34
|
const { compose, env, dockerfile } = InfraBuilder.build(config)
|
|
29
35
|
|
|
30
36
|
fs.writeFileSync(composeFile, compose, 'utf8')
|
|
@@ -32,10 +38,15 @@ export class AppInfra {
|
|
|
32
38
|
fs.writeFileSync(path.resolve(fullTargetDir, 'Containerfile'), dockerfile, 'utf8')
|
|
33
39
|
|
|
34
40
|
Log.info(`[Infra] Dynamically generated compose.yaml and .env in ${fullTargetDir}`)
|
|
41
|
+
onProgress?.({ step: 'infra', status: 'success', message: 'Infrastructure configurée' })
|
|
35
42
|
|
|
36
|
-
|
|
43
|
+
onProgress?.({ step: 'compose', status: 'running', message: 'Démarrage des containers...' })
|
|
44
|
+
await this.runCompose('up -d --build', composeFile, onProgress)
|
|
45
|
+
onProgress?.({ step: 'compose', status: 'success', message: 'Containers démarrés' })
|
|
37
46
|
} catch (e: any) {
|
|
38
47
|
Log.error(`[Infra] Failed to start infrastructure: ${e.message}`)
|
|
48
|
+
onProgress?.({ step: 'error', status: 'error', message: `Erreur: ${e.message}` })
|
|
49
|
+
throw e
|
|
39
50
|
}
|
|
40
51
|
}
|
|
41
52
|
|
|
@@ -59,7 +70,7 @@ export class AppInfra {
|
|
|
59
70
|
return 'podman compose'
|
|
60
71
|
}
|
|
61
72
|
|
|
62
|
-
private static async runCompose(action: string, composeFile: string): Promise<void> {
|
|
73
|
+
private static async runCompose(action: string, composeFile: string, onProgress?: (event: { step: string; status: 'running' | 'success' | 'error'; message: string }) => void): Promise<void> {
|
|
63
74
|
return new Promise((resolve, reject) => {
|
|
64
75
|
if (!fs.existsSync(composeFile)) {
|
|
65
76
|
Log.error(`[Infra] Compose file not found at: ${composeFile}`)
|
|
@@ -93,12 +104,20 @@ export class AppInfra {
|
|
|
93
104
|
resolve()
|
|
94
105
|
})
|
|
95
106
|
|
|
96
|
-
// Stream output to console
|
|
107
|
+
// Stream output to console and emit progress events
|
|
97
108
|
if (child.stdout) {
|
|
98
|
-
child.stdout.on('data', (data) =>
|
|
109
|
+
child.stdout.on('data', (data) => {
|
|
110
|
+
const text = data.toString().trim()
|
|
111
|
+
console.log(text)
|
|
112
|
+
// Could emit sub-steps here if desired:
|
|
113
|
+
// onProgress?.({ step: 'compose', status: 'running', message: text })
|
|
114
|
+
})
|
|
99
115
|
}
|
|
100
116
|
if (child.stderr) {
|
|
101
|
-
child.stderr.on('data', (data) =>
|
|
117
|
+
child.stderr.on('data', (data) => {
|
|
118
|
+
const text = data.toString().trim()
|
|
119
|
+
console.error(text)
|
|
120
|
+
})
|
|
102
121
|
}
|
|
103
122
|
})
|
|
104
123
|
}
|