UNPKG

keystone-seeder

Version:
57 lines (56 loc) 1.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAvailableModels = getAvailableModels; exports.getModelConfig = getModelConfig; exports.getFieldsMeta = getFieldsMeta; const internals_1 = require("@prisma/internals"); const queries_1 = require("./queries"); /** * Get a list of all available models that can be seeded */ async function getAvailableModels(context) { try { const { keystone: { adminMeta: { lists }, }, } = (await context.sudo().graphql.run({ query: queries_1.ListsQuery })); return lists.map((list) => list.key); } catch (error) { console.error("Error fetching available models:", error); throw error; } } /** * Get the Prisma model configuration for a specific model */ async function getModelConfig(modelName) { try { const dmmf = await (0, internals_1.getDMMF)({ datamodelPath: "schema.prisma" }); const model = dmmf.datamodel.models.find((m) => m.name === modelName); if (!model) { throw new Error(`Model '${modelName}' not found in Prisma DMMF.`); } return model; } catch (error) { console.error(`Error getting model config for ${modelName}:`, error); throw error; } } /** * Get field metadata for a specific model from Keystone */ async function getFieldsMeta(context, modelName) { try { const { keystone: { adminMeta: { list }, }, } = (await context.sudo().graphql.run({ query: queries_1.FieldsAdminMetaQuery, variables: { key: modelName }, })); return list.fields.reduce((result, item) => { result[item.path] = item.fieldMeta; return result; }, {}); } catch (error) { console.error(`Error getting fields metadata for ${modelName}:`, error); throw error; } }