'use strict';

/**
 * Contract: payload generate
 *
 * Generate payload JSON dari schema database (introspeksi tabel).
 * Wajib menyertakan --config dan --table (mode interactive sudah dihapus).
 *
 * Inline migration v4.0.0: business logic dipindah ke
 * generators/lib/payload/payload-runner.js (dari create-payload.js).
 * Handler langsung instantiate PayloadGenerator dan call run() dengan args.
 * Tidak inject mode flag (validate/diff/sync absent untuk generate default).
 */

const { PayloadGenerator } = require('../../lib/payload/payload-runner');

module.exports = {
    resource: 'payload',
    verb: 'generate',
    description: 'Generate payload JSON dari schema database (introspeksi tabel)',
    category: 'generation',
    flags: {
        config: {
            type: 'string',
            required: false,
            default: null,
            description: 'File config database (.env). Fallback ke `.restforge/defaults.json` bila tidak disediakan eksplisit (set via `config set-default`)'
        },
        table: {
            type: 'string',
            required: true,
            description: 'Nama tabel spesifik yang akan di-generate payload-nya'
        },
        output: {
            type: 'string',
            required: false,
            default: null,
            description: 'Output directory untuk file payload yang di-generate (default: payload/)'
        },
        'schema-path': {
            type: 'string',
            required: false,
            default: 'schema',
            description: 'Lokasi SDF (file atau folder) sumber metadata tabel (default: folder `schema`). WAJIB memuat tabel bila tabel memiliki kolom soft-delete (is_deleted/deleted_at/deleted_by): blok softDelete RDF diturunkan dari SDF (R12/R13). Diabaikan untuk tabel non-soft-delete.'
        }
    },
    examples: [
        'npx restforge payload generate --config=db.env --table=users',
        'npx restforge payload generate --config=db.env --table=users --output=./my-payloads',
        'npx restforge payload generate --config=db.env --table=visitor_categories --schema-path=./schema/visitor-categories.js'
    ],
    async handler(args) {
        const generator = new PayloadGenerator();
        await generator.run({
            config: args.config,
            table: args.table,
            output: args.output || null,
            'schema-path': args['schema-path']
        });
    }
};
