export default class SchemaLoader {

    constructor(api) {
        this.api = api;
    }

    /**
     * @param {string} entity
     * @param {Object} options
     * @param {boolean} options.forCard  اگر true باشد فقط فیلدهای کارت برگردانده می‌شود
     */
    async load(entity, options = {}) {

        if (!entity) {
            throw new Error("Entity is required");
        }

        try {

            const result = await this.api.get(
                `runtime/${entity}/schema`
            );

            const schema = result?.data || result;

            if (!schema || !Array.isArray(schema.fields)) {
                console.error("Invalid schema response:", result);
                throw new Error("Invalid schema response");
            }

            // ✅ اگر برای کارت باشد → فیلتر کن
            if (options.forCard) {
                schema.fields = schema.fields.filter(f => {
                    if (typeof f.show_in_card === "undefined") return true;
                    return Number(f.show_in_card) === 1;
                });
            }

            return schema;

        } catch (err) {

            console.error("Schema load failed:", err);

            throw new Error(
                err?.message || "Schema load failed"
            );
        }
    }
}
