@restforgejs/platform 5.0.9 → 5.1.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/build-info.json +2 -2
- package/cli/consumer-deploy.js +1 -1
- package/cli/consumer.js +1 -1
- package/generators/cli/fast-track.js +963 -0
- package/generators/cli/payload/sync.js +18 -2
- package/generators/lib/migrate/field-type-resolver.js +18 -5
- package/generators/lib/payload/payload-runner.js +724 -39
- package/generators/lib/templates/dashboard-catalog.js +1 -1
- package/generators/lib/templates/db-connection-env.js +1 -1
- package/generators/lib/templates/dbschema-catalog.js +1 -1
- package/generators/lib/templates/field-validation-catalog.js +1 -1
- package/generators/lib/templates/mysql-template.js +1 -1
- package/generators/lib/templates/oracle-template.js +1 -1
- package/generators/lib/templates/postgres-template.js +1 -1
- package/generators/lib/templates/query-declarative-catalog.js +1 -1
- package/generators/lib/templates/sqlite-template.js +1 -1
- package/integrity-manifest.json +18 -18
- package/package.json +1 -1
- package/scripts/verify-integrity.js +1 -1
- package/server.js +1 -1
- package/src/components/handlers/adjust_handler.js +1 -1
- package/src/components/handlers/audit_handler.js +1 -1
- package/src/components/handlers/delete_handler.js +1 -1
- package/src/components/handlers/export_handler.js +1 -1
- package/src/components/handlers/import_handler.js +1 -1
- package/src/components/handlers/insert_handler.js +1 -1
- package/src/components/handlers/update_handler.js +1 -1
- package/src/components/handlers/upload_handler.js +1 -1
- package/src/components/handlers/workflow_handler.js +1 -1
- package/src/components/integrations/webhook.js +1 -1
- package/src/consumers/baseConsumer.js +1 -1
- package/src/consumers/declarativeMapper.js +1 -1
- package/src/consumers/handlers/apiHandler.js +1 -1
- package/src/consumers/handlers/consoleHandler.js +1 -1
- package/src/consumers/handlers/databaseHandler.js +1 -1
- package/src/consumers/handlers/index.js +1 -1
- package/src/consumers/handlers/kafkaHandler.js +1 -1
- package/src/consumers/index.js +1 -1
- package/src/consumers/messageTransformer.js +1 -1
- package/src/consumers/validator.js +1 -1
- package/src/core/db/dialect/base-dialect.js +1 -1
- package/src/core/db/dialect/index.js +1 -1
- package/src/core/db/dialect/mysql-dialect.js +1 -1
- package/src/core/db/dialect/oracle-dialect.js +1 -1
- package/src/core/db/dialect/postgres-dialect.js +1 -1
- package/src/core/db/dialect/sqlite-dialect.js +1 -1
- package/src/core/db/flatten-helper.js +1 -1
- package/src/core/db/query-builder-error.js +1 -1
- package/src/core/db/query-builder.js +1 -1
- package/src/core/db/relation-helper.js +1 -1
- package/src/core/handlers/delete_handler.js +1 -1
- package/src/core/handlers/insert_handler.js +1 -1
- package/src/core/handlers/update_handler.js +1 -1
- package/src/core/models/base-model.js +1 -1
- package/src/core/utils/cache-manager.js +1 -1
- package/src/core/utils/component-engine.js +1 -1
- package/src/core/utils/context-builder.js +1 -1
- package/src/core/utils/datetime-formatter.js +1 -1
- package/src/core/utils/datetime-parser.js +1 -1
- package/src/core/utils/db.js +1 -1
- package/src/core/utils/logger.js +1 -1
- package/src/core/utils/payload-loader.js +1 -1
- package/src/core/utils/security-checks.js +1 -1
- package/src/middleware/body-options.js +1 -1
- package/src/middleware/cors.js +1 -1
- package/src/middleware/idempotency.js +1 -1
- package/src/middleware/rate-limiter.js +1 -1
- package/src/middleware/request-logger.js +1 -1
- package/src/middleware/security-headers.js +1 -1
- package/src/models/base-model-mysql.js +1 -1
- package/src/models/base-model-oracle.js +1 -1
- package/src/models/base-model-sqlite.js +1 -1
- package/src/models/base-model.js +1 -1
- package/src/pro/caching/redis-client.js +1 -1
- package/src/pro/caching/redis-helper.js +1 -1
- package/src/pro/consumers/baseConsumer.js +1 -1
- package/src/pro/consumers/declarativeMapper.js +1 -1
- package/src/pro/consumers/handlers/apiHandler.js +1 -1
- package/src/pro/consumers/handlers/consoleHandler.js +1 -1
- package/src/pro/consumers/handlers/databaseHandler.js +1 -1
- package/src/pro/consumers/handlers/index.js +1 -1
- package/src/pro/consumers/handlers/kafkaHandler.js +1 -1
- package/src/pro/consumers/index.js +1 -1
- package/src/pro/consumers/messageTransformer.js +1 -1
- package/src/pro/consumers/validator.js +1 -1
- package/src/pro/database/base-model-mysql.js +1 -1
- package/src/pro/database/base-model-oracle.js +1 -1
- package/src/pro/database/base-model-sqlite.js +1 -1
- package/src/pro/database/db-mysql.js +1 -1
- package/src/pro/database/db-oracle.js +1 -1
- package/src/pro/database/db-sqlite.js +1 -1
- package/src/pro/excel/excel-generator.js +1 -1
- package/src/pro/excel/excel-parser.js +1 -1
- package/src/pro/excel/export-service.js +1 -1
- package/src/pro/excel/export_handler.js +1 -1
- package/src/pro/excel/import-service.js +1 -1
- package/src/pro/excel/import-validator.js +1 -1
- package/src/pro/excel/import_handler.js +1 -1
- package/src/pro/excel/upsert-builder.js +1 -1
- package/src/pro/idgen/idgen-routes.js +1 -1
- package/src/pro/integrations/lookup-resolver.js +1 -1
- package/src/pro/integrations/upload-handler-v2.js +1 -1
- package/src/pro/integrations/upload-handler.js +1 -1
- package/src/pro/integrations/webhook.js +1 -1
- package/src/pro/locking/lock-routes.js +1 -1
- package/src/pro/locking/resource-lock-manager.js +1 -1
- package/src/pro/messaging/kafkaConsumerService.js +1 -1
- package/src/pro/messaging/kafkaService.js +1 -1
- package/src/pro/messaging/messagehubService.js +1 -1
- package/src/pro/messaging/rabbitmqService.js +1 -1
- package/src/pro/scheduler/job-manager.js +1 -1
- package/src/pro/scheduler/job-routes.js +1 -1
- package/src/pro/scheduler/job-validator.js +1 -1
- package/src/pro/storage/base-storage-provider.js +1 -1
- package/src/pro/storage/file-metadata-helper.js +1 -1
- package/src/pro/storage/index.js +1 -1
- package/src/pro/storage/local-storage-provider.js +1 -1
- package/src/pro/storage/s3-storage-provider.js +1 -1
- package/src/pro/storage/upload-cleanup-job.js +1 -1
- package/src/pro/storage/upload-cleanup-scheduler.js +1 -1
- package/src/pro/storage/upload-pending-tracker.js +1 -1
- package/src/pro/websocket/broadcast-helper.js +1 -1
- package/src/pro/websocket/index.js +1 -1
- package/src/pro/websocket/livesync-server.js +1 -1
- package/src/pro/websocket/ws-broadcaster.js +1 -1
- package/src/services/export-service.js +1 -1
- package/src/services/import-service.js +1 -1
- package/src/services/kafkaConsumerService.js +1 -1
- package/src/services/kafkaService.js +1 -1
- package/src/services/messagehubService.js +1 -1
- package/src/services/rabbitmqService.js +1 -1
- package/src/utils/cache-invalidation-registry.js +1 -1
- package/src/utils/cache-manager.js +1 -1
- package/src/utils/component-engine.js +1 -1
- package/src/utils/config-extractor.js +1 -1
- package/src/utils/consumerLogger.js +1 -1
- package/src/utils/context-builder.js +1 -1
- package/src/utils/dashboard-helpers.js +1 -1
- package/src/utils/dateHelper.js +1 -1
- package/src/utils/datetime-formatter.js +1 -1
- package/src/utils/datetime-parser.js +1 -1
- package/src/utils/db-bootstrap.js +1 -1
- package/src/utils/db-mysql.js +1 -1
- package/src/utils/db-oracle.js +1 -1
- package/src/utils/db-sqlite.js +1 -1
- package/src/utils/db.js +1 -1
- package/src/utils/demo-generator.js +1 -1
- package/src/utils/excel-generator.js +1 -1
- package/src/utils/excel-parser.js +1 -1
- package/src/utils/file-watcher.js +1 -1
- package/src/utils/id-generator.js +1 -1
- package/src/utils/idempotency-manager.js +1 -1
- package/src/utils/import-validator.js +1 -1
- package/src/utils/license-client.js +1 -1
- package/src/utils/lock-manager.js +1 -1
- package/src/utils/logger.js +1 -1
- package/src/utils/lookup-resolver.js +1 -1
- package/src/utils/payload-loader.js +1 -1
- package/src/utils/processor-response.js +1 -1
- package/src/utils/rabbitmq.js +1 -1
- package/src/utils/redis-client.js +1 -1
- package/src/utils/redis-helper.js +1 -1
- package/src/utils/request-scope.js +1 -1
- package/src/utils/security-checks.js +1 -1
- package/src/utils/service-resolver.js +1 -1
- package/src/utils/shutdown-coordinator.js +1 -1
- package/src/utils/trusted-keys.js +1 -1
- package/src/utils/upload-handler.js +1 -1
- package/src/utils/upsert-builder.js +1 -1
- package/src/utils/workflow-hook-executor.js +1 -1
|
@@ -30,18 +30,34 @@ module.exports = {
|
|
|
30
30
|
required: false,
|
|
31
31
|
default: null,
|
|
32
32
|
description: 'Sync hanya satu tabel spesifik (default: semua)'
|
|
33
|
+
},
|
|
34
|
+
'expand-fk': {
|
|
35
|
+
type: 'boolean',
|
|
36
|
+
required: false,
|
|
37
|
+
default: false,
|
|
38
|
+
description: 'Generate konfigurasi JOIN dari foreign key: buat file SQL query/<table>-join.sql dan set datatablesQuery/viewQuery ke file tersebut. Opt-in; tanpa flag ini perilaku sync tidak berubah. Butuh --table. Bila --fk-columns tidak diisi, kolom display per FK dipilih otomatis (name/nama -> code/kode -> primary key)'
|
|
39
|
+
},
|
|
40
|
+
'fk-columns': {
|
|
41
|
+
type: 'string',
|
|
42
|
+
required: false,
|
|
43
|
+
default: null,
|
|
44
|
+
description: 'Opsional. Daftar kolom tabel referensi yang di-surface lewat JOIN. Setiap entri WAJIB berbentuk `table.column` (qualified), dipisah koma. Contoh: visitor_categories.category_code,visitor_categories.category_name. Bila dikosongkan, di-resolve otomatis per FK'
|
|
33
45
|
}
|
|
34
46
|
},
|
|
35
47
|
examples: [
|
|
36
48
|
'npx restforge payload sync --config=db.env',
|
|
37
|
-
'npx restforge payload sync --config=db.env --table=users'
|
|
49
|
+
'npx restforge payload sync --config=db.env --table=users',
|
|
50
|
+
'npx restforge payload sync --table=visitors --expand-fk',
|
|
51
|
+
'npx restforge payload sync --table=visitors --expand-fk --fk-columns=visitor_categories.category_code,visitor_categories.category_name'
|
|
38
52
|
],
|
|
39
53
|
async handler(args) {
|
|
40
54
|
const generator = new PayloadGenerator();
|
|
41
55
|
await generator.run({
|
|
42
56
|
config: args.config,
|
|
43
57
|
table: args.table || null,
|
|
44
|
-
sync: true
|
|
58
|
+
sync: true,
|
|
59
|
+
expandFk: args['expand-fk'] === true,
|
|
60
|
+
fkColumns: args['fk-columns'] || null
|
|
45
61
|
});
|
|
46
62
|
}
|
|
47
63
|
};
|
|
@@ -24,6 +24,19 @@ const AUDIT_FIELDS = ['created_at', 'created_by', 'updated_at', 'updated_by'];
|
|
|
24
24
|
const TEXTAREA_FIELDS = ['address', 'description', 'notes'];
|
|
25
25
|
const TEXTAREA_PREFIXES = ['remark'];
|
|
26
26
|
|
|
27
|
+
// Tipe numerik kanonik RDF (lihat handbook catalogs/rdf/field-validation.md).
|
|
28
|
+
// Ketiganya dipetakan ke form input `number` di UDF.
|
|
29
|
+
const NUMERIC_TYPES = ['integer', 'decimal', 'number'];
|
|
30
|
+
|
|
31
|
+
// Mengambil nilai `constraints.default` apa adanya bila ada. Constraint `default`
|
|
32
|
+
// berlaku universal untuk semua tipe field (handbook field-validation.md), sehingga
|
|
33
|
+
// nilai default dari SDF/RDF harus terbawa ke `defaultValue` UDF.
|
|
34
|
+
function extractDefault(constraints) {
|
|
35
|
+
return Object.prototype.hasOwnProperty.call(constraints, 'default')
|
|
36
|
+
? constraints.default
|
|
37
|
+
: undefined;
|
|
38
|
+
}
|
|
39
|
+
|
|
27
40
|
const CHECKBOX_TEXT_DEFAULT = { checked: 'Yes', unchecked: 'No' };
|
|
28
41
|
const CHECKBOX_TEXT_MAP = {
|
|
29
42
|
is_active: { checked: 'Active', unchecked: 'Inactive' },
|
|
@@ -202,8 +215,8 @@ class FieldTypeResolver {
|
|
|
202
215
|
};
|
|
203
216
|
}
|
|
204
217
|
|
|
205
|
-
// Rule 4: Number
|
|
206
|
-
if (valType
|
|
218
|
+
// Rule 4: Number (integer / decimal / number)
|
|
219
|
+
if (NUMERIC_TYPES.includes(valType)) {
|
|
207
220
|
const extra = {};
|
|
208
221
|
for (const key of ['min', 'max', 'step']) {
|
|
209
222
|
if (Object.prototype.hasOwnProperty.call(constraints, key)) {
|
|
@@ -219,7 +232,7 @@ class FieldTypeResolver {
|
|
|
219
232
|
inTable,
|
|
220
233
|
tableOrder,
|
|
221
234
|
tableField: null,
|
|
222
|
-
defaultValue:
|
|
235
|
+
defaultValue: extractDefault(constraints),
|
|
223
236
|
extra
|
|
224
237
|
};
|
|
225
238
|
}
|
|
@@ -293,7 +306,7 @@ class FieldTypeResolver {
|
|
|
293
306
|
inTable,
|
|
294
307
|
tableOrder,
|
|
295
308
|
tableField: null,
|
|
296
|
-
defaultValue:
|
|
309
|
+
defaultValue: extractDefault(constraints),
|
|
297
310
|
extra: { rows: 3, maxlength: maxlen }
|
|
298
311
|
};
|
|
299
312
|
}
|
|
@@ -316,7 +329,7 @@ class FieldTypeResolver {
|
|
|
316
329
|
inTable,
|
|
317
330
|
tableOrder,
|
|
318
331
|
tableField: null,
|
|
319
|
-
defaultValue:
|
|
332
|
+
defaultValue: extractDefault(constraints),
|
|
320
333
|
extra
|
|
321
334
|
};
|
|
322
335
|
}
|