arkos 1.0.5-alpha → 1.0.6-alpha
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.
|
@@ -219,8 +219,7 @@ function getAllPrismaFiles(dirPath, fileList = []) {
|
|
|
219
219
|
});
|
|
220
220
|
return fileList;
|
|
221
221
|
}
|
|
222
|
-
const
|
|
223
|
-
const files = getAllPrismaFiles(prismaRootDir);
|
|
222
|
+
const files = getAllPrismaFiles("./prisma");
|
|
224
223
|
for (const file of files) {
|
|
225
224
|
const content = fs_1.default.readFileSync(file, "utf-8");
|
|
226
225
|
prismaContent.push(content);
|
|
@@ -238,7 +237,7 @@ for (const model of models) {
|
|
|
238
237
|
const modelName = (0, change_case_helpers_1.pascalCase)(model);
|
|
239
238
|
let modelFile;
|
|
240
239
|
for (const file of files) {
|
|
241
|
-
const filePath = path_1.default.join(
|
|
240
|
+
const filePath = path_1.default.join(file);
|
|
242
241
|
const stats = fs_1.default.statSync(filePath);
|
|
243
242
|
if (stats.isFile()) {
|
|
244
243
|
const content = fs_1.default.readFileSync(filePath, "utf-8");
|
|
@@ -252,7 +251,7 @@ for (const model of models) {
|
|
|
252
251
|
if (!modelFile) {
|
|
253
252
|
throw new Error(`Model ${modelName} not found`);
|
|
254
253
|
}
|
|
255
|
-
const content = fs_1.default.readFileSync(path_1.default.join(
|
|
254
|
+
const content = fs_1.default.readFileSync(path_1.default.join(modelFile), "utf-8");
|
|
256
255
|
const modelStart = content.indexOf(`model ${modelName} {`);
|
|
257
256
|
const modelEnd = content.indexOf("}", modelStart);
|
|
258
257
|
const modelDefinition = content.slice(modelStart, modelEnd);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/models.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../../utils/helpers/change-case.helpers\";\nimport arkosEnv from \"../arkos-env\";\nimport { userFileExtension } from \"./fs.helpers\";\n\nexport let prismaModelsModules: Record<\n string,\n Awaited<ReturnType<typeof importPrismaModelModules>>\n> = {};\n\nexport function getModelModules(modelName: string) {\n return prismaModelsModules[kebabCase(modelName)];\n}\n\n/**\n * Dynamically imports model-specific modules like middlewares, auth configurations,\n * prisma query options, and DTOs for a given model.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\", \"Post\").\n * @returns {Promise<Object>} An object containing the imported modules: `middlewares`, `authConfigs`, `prismaQueryOptions`, and `dtos`.\n */\nexport async function importPrismaModelModules(modelName: string) {\n const kebabModelName = kebabCase(modelName);\n const lowerModelName = modelName.toLowerCase();\n\n const moduleDir = path.resolve(process.cwd(), \"src\", \"modules\", modelName);\n const dtosDir = path.join(moduleDir, \"dtos\");\n const schemasDir = path.join(moduleDir, \"schemas\");\n\n const middlewaresFile = path.join(\n moduleDir,\n `${kebabModelName}.middlewares.${userFileExtension}`\n );\n const authConfigsFile = path.join(\n moduleDir,\n `${kebabModelName}.auth-configs.${userFileExtension}`\n );\n const prismaQueryOptionsFile = path.join(\n moduleDir,\n `${kebabModelName}.prisma-query-options.${userFileExtension}`\n );\n\n // Define DTO file paths\n const modelDtoFile = path.join(\n dtosDir,\n `${lowerModelName}.dto.${userFileExtension}`\n );\n const createDtoFile = path.join(\n dtosDir,\n `create-${lowerModelName}.dto.${userFileExtension}`\n );\n const updateDtoFile = path.join(\n dtosDir,\n `update-${lowerModelName}.dto.${userFileExtension}`\n );\n const queryDtoFile = path.join(\n dtosDir,\n `query-${lowerModelName}.dto.${userFileExtension}`\n );\n\n const modelSchemaFile = path.join(\n schemasDir,\n `${lowerModelName}.schema.${userFileExtension}`\n );\n const createSchemaFile = path.join(\n schemasDir,\n `create-${lowerModelName}.schema.${userFileExtension}`\n );\n const updateSchemaFile = path.join(\n schemasDir,\n `update-${lowerModelName}.schema.${userFileExtension}`\n );\n const querySchemaFile = path.join(\n schemasDir,\n `query-${lowerModelName}.schema.${userFileExtension}`\n );\n\n const result: {\n middlewares?: any;\n authConfigs?: any;\n prismaQueryOptions?: any;\n dtos: {\n create?: any;\n update?: any;\n query?: any;\n model?: any;\n };\n schemas: {\n create?: any;\n update?: any;\n query?: any;\n model?: any;\n };\n } = {\n dtos: {},\n schemas: {},\n };\n\n try {\n if (fs.existsSync(middlewaresFile)) {\n const middlewareModule = await import(middlewaresFile);\n result.middlewares = middlewareModule;\n }\n } catch (error) {\n console.error(\n `Error importing middlewares for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(authConfigsFile)) {\n const authConfigsModule = await import(authConfigsFile);\n result.authConfigs = authConfigsModule.default || authConfigsModule;\n }\n } catch (error) {\n console.error(\n `Error importing auth configs for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(prismaQueryOptionsFile)) {\n const prismaQueryOptionsModule = await import(prismaQueryOptionsFile);\n result.prismaQueryOptions =\n prismaQueryOptionsModule.default || prismaQueryOptionsModule;\n }\n } catch (error) {\n console.error(\n `Error importing prisma query options for model \"${modelName}\":`,\n error\n );\n }\n\n // Import DTOs\n const pascalModelName = pascalCase(modelName);\n try {\n if (fs.existsSync(modelDtoFile)) {\n const modelDtoModule = await import(modelDtoFile);\n result.dtos.model =\n modelDtoModule.default || modelDtoModule[`${pascalModelName}Dto`];\n }\n } catch (error) {\n console.error(\n `Error importing model main DTO for model \"${modelName} ${pascalModelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(createDtoFile)) {\n const createDtoModule = await import(createDtoFile);\n result.dtos.create =\n createDtoModule.default ||\n createDtoModule[`Create${pascalModelName}Dto`];\n }\n } catch (error) {\n console.error(\n `Error importing create DTO for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(updateDtoFile)) {\n const updateDtoModule = await import(updateDtoFile);\n result.dtos.update =\n updateDtoModule.default ||\n updateDtoModule[`Update${pascalModelName}Dto`];\n }\n } catch (error) {\n console.error(\n `Error importing update DTO for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(queryDtoFile)) {\n const queryDtoModule = await import(queryDtoFile);\n result.dtos.query =\n queryDtoModule.default || queryDtoModule[`Query${pascalModelName}Dto`];\n }\n } catch (error) {\n console.error(`Error importing query DTO for model \"${modelName}\":`, error);\n }\n\n try {\n if (fs.existsSync(modelSchemaFile)) {\n const modelSchemaModule = await import(modelSchemaFile);\n result.dtos.model =\n modelSchemaModule.default ||\n modelSchemaModule[`${pascalModelName}Schema`];\n }\n } catch (error) {\n console.error(\n `Error importing create Schema for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(createSchemaFile)) {\n const createSchemaModule = await import(createSchemaFile);\n result.dtos.create =\n createSchemaModule.default ||\n createSchemaModule[`Create${pascalModelName}Schema`];\n }\n } catch (error) {\n console.error(\n `Error importing create Schema for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(updateSchemaFile)) {\n const updateSchemaModule = await import(updateSchemaFile);\n result.dtos.update =\n updateSchemaModule.default ||\n updateSchemaModule[`Update${pascalModelName}Schema`];\n }\n } catch (error) {\n console.error(\n `Error importing update Schema for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(querySchemaFile)) {\n const querySchemaModule = await import(querySchemaFile);\n result.dtos.query =\n querySchemaModule.default ||\n querySchemaModule[`Query${pascalModelName}Schema`];\n }\n } catch (error) {\n console.error(\n `Error importing query Schema for model \"${modelName}\":`,\n error\n );\n }\n\n prismaModelsModules[modelName] = result;\n\n return result;\n}\n\nexport type ModelFieldDefition = {\n name: string;\n type: string;\n isUnique: boolean;\n};\n\n/**\n * Represents the structure of relation fields for Prisma models.\n * It includes both singular (one-to-one) and list (one-to-many) relationships.\n *\n * @typedef {Object} RelationFields\n * @property {Array<{name: string, type: string}>} singular - List of singular relationships.\n * @property {Array<{name: string, type: string}>} list - List of list relationships.\n */\nexport type RelationFields = {\n singular: Omit<ModelFieldDefition, \"isUnique\">[];\n list: Omit<ModelFieldDefition, \"isUnique\">[];\n};\n\nconst schemaFolderPath =\n process.env.PRISMA_SCHEMA_PATH || arkosEnv.PRISMA_SCHEMA_PATH;\n\n/**\n * Reads the Prisma schema files and extracts all model definitions,\n * identifying their relations (one-to-one and one-to-many).\n */\nconst prismaModelRelationFields: Record<string, RelationFields> = {};\n\nconst prismaContent: string[] = [];\n\nfunction getAllPrismaFiles(dirPath: string, fileList: string[] = []) {\n const files = fs.readdirSync(dirPath);\n\n files?.forEach((file) => {\n const filePath = path.join(dirPath, file);\n const stat = fs.statSync(filePath);\n\n // Skip migrations folder\n if (stat.isDirectory() && file !== \"migrations\") {\n fileList = getAllPrismaFiles(filePath, fileList);\n } else if (stat.isFile() && file.endsWith(\".prisma\")) {\n fileList.push(filePath);\n }\n });\n\n return fileList;\n}\n\nconst prismaRootDir = \"./prisma\"; // Adjust this path if needed\nconst files = getAllPrismaFiles(prismaRootDir);\n\nfor (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\");\n prismaContent.push(content);\n}\n\nconst modelRegex = /model\\s+(\\w+)\\s*{/g;\nconst models: string[] = [];\nexport const prismaModelsUniqueFields: Record<string, ModelFieldDefition[]> =\n [] as any;\n\nprismaContent.join(\"\\n\").replace(modelRegex, (_, modelName) => {\n if (!models.includes(modelName)) models.push(camelCase(modelName.trim()));\n return modelName;\n});\n\nfor (const model of models) {\n const modelName = pascalCase(model);\n\n let modelFile;\n for (const file of files) {\n const filePath = path.join(prismaRootDir, file);\n const stats = fs.statSync(filePath);\n\n if (stats.isFile()) {\n const content = fs.readFileSync(filePath, \"utf-8\");\n prismaContent.push(content);\n if (content.includes(`model ${modelName} {`)) {\n modelFile = file;\n break;\n }\n }\n }\n\n if (!modelFile) {\n throw new Error(`Model ${modelName} not found`);\n }\n\n const content = fs.readFileSync(path.join(prismaRootDir, modelFile), \"utf-8\");\n\n const modelStart = content.indexOf(`model ${modelName} {`);\n const modelEnd = content.indexOf(\"}\", modelStart);\n const modelDefinition = content.slice(modelStart, modelEnd);\n\n const relations: RelationFields = {\n singular: [],\n list: [],\n };\n const lines = modelDefinition.split(\"\\n\");\n\n for (const line of lines) {\n const trimmedLine = line.trim();\n\n if (\n !trimmedLine ||\n trimmedLine.startsWith(\"model\") ||\n trimmedLine.startsWith(\"//\")\n )\n continue;\n\n const [fieldName, type] = trimmedLine.split(/\\s+/);\n const isUnique = trimmedLine.includes(\"@unique\");\n\n if (isUnique)\n prismaModelsUniqueFields[model] = [\n ...(prismaModelsUniqueFields[model] || []),\n { name: fieldName, type, isUnique },\n ];\n\n const cleanType = type?.replace(\"[]\", \"\").replace(\"?\", \"\");\n\n if (\n trimmedLine.includes(\"@relation\") ||\n trimmedLine.match(/\\s+\\w+(\\[\\])?(\\s+@|$)/) ||\n models.includes(camelCase(cleanType || \"\"))\n ) {\n const modelStart = content.indexOf(`enum ${cleanType} {`);\n\n if (\n !cleanType ||\n modelStart >= 0 ||\n cleanType === \"String\" ||\n cleanType === \"Int\" ||\n cleanType === \"Float\" ||\n cleanType === \"Boolean\" ||\n cleanType === \"DateTime\" ||\n cleanType === \"Bytes\" ||\n cleanType === \"Decimal\" ||\n cleanType === \"BigInt\" ||\n cleanType === \"Json\"\n ) {\n continue;\n }\n\n if (!type?.includes(\"[]\")) {\n relations.singular.push({\n name: fieldName,\n type: cleanType,\n });\n } else {\n relations.list.push({\n name: fieldName,\n type: cleanType,\n });\n }\n }\n\n prismaModelRelationFields[modelName] = relations;\n }\n}\n\n/**\n * Retrieves the relations for a given Prisma model.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\").\n * @returns {RelationFields|undefined} The relation fields for the model, or `undefined` if no relations are found.\n */\nexport function getPrismaModelRelations(modelName: string) {\n modelName = pascalCase(modelName);\n\n if (!(modelName in prismaModelRelationFields)) return;\n return prismaModelRelationFields[modelName];\n}\n\n/**\n * Retrieves all the model names from the Prisma schema.\n *\n * @returns {string[]} An array of model names (e.g., [\"User\", \"Post\"]).\n */\nfunction getModels() {\n return models;\n}\n\n/** Retuns a given model unique fields\n * @param {string} modelName - The name of model in PascalCase\n * @returns {string[]} An array of all unique fields,\n */\nfunction getModelUniqueFields(modelName: string) {\n return prismaModelsUniqueFields[modelName];\n}\n\nexport { models, getModels, getModelUniqueFields, prismaModelRelationFields };\n"]}
|
|
1
|
+
{"version":3,"file":"models.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/models.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../../utils/helpers/change-case.helpers\";\nimport arkosEnv from \"../arkos-env\";\nimport { userFileExtension } from \"./fs.helpers\";\n\nexport let prismaModelsModules: Record<\n string,\n Awaited<ReturnType<typeof importPrismaModelModules>>\n> = {};\n\nexport function getModelModules(modelName: string) {\n return prismaModelsModules[kebabCase(modelName)];\n}\n\n/**\n * Dynamically imports model-specific modules like middlewares, auth configurations,\n * prisma query options, and DTOs for a given model.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\", \"Post\").\n * @returns {Promise<Object>} An object containing the imported modules: `middlewares`, `authConfigs`, `prismaQueryOptions`, and `dtos`.\n */\nexport async function importPrismaModelModules(modelName: string) {\n const kebabModelName = kebabCase(modelName);\n const lowerModelName = modelName.toLowerCase();\n\n const moduleDir = path.resolve(process.cwd(), \"src\", \"modules\", modelName);\n const dtosDir = path.join(moduleDir, \"dtos\");\n const schemasDir = path.join(moduleDir, \"schemas\");\n\n const middlewaresFile = path.join(\n moduleDir,\n `${kebabModelName}.middlewares.${userFileExtension}`\n );\n const authConfigsFile = path.join(\n moduleDir,\n `${kebabModelName}.auth-configs.${userFileExtension}`\n );\n const prismaQueryOptionsFile = path.join(\n moduleDir,\n `${kebabModelName}.prisma-query-options.${userFileExtension}`\n );\n\n // Define DTO file paths\n const modelDtoFile = path.join(\n dtosDir,\n `${lowerModelName}.dto.${userFileExtension}`\n );\n const createDtoFile = path.join(\n dtosDir,\n `create-${lowerModelName}.dto.${userFileExtension}`\n );\n const updateDtoFile = path.join(\n dtosDir,\n `update-${lowerModelName}.dto.${userFileExtension}`\n );\n const queryDtoFile = path.join(\n dtosDir,\n `query-${lowerModelName}.dto.${userFileExtension}`\n );\n\n const modelSchemaFile = path.join(\n schemasDir,\n `${lowerModelName}.schema.${userFileExtension}`\n );\n const createSchemaFile = path.join(\n schemasDir,\n `create-${lowerModelName}.schema.${userFileExtension}`\n );\n const updateSchemaFile = path.join(\n schemasDir,\n `update-${lowerModelName}.schema.${userFileExtension}`\n );\n const querySchemaFile = path.join(\n schemasDir,\n `query-${lowerModelName}.schema.${userFileExtension}`\n );\n\n const result: {\n middlewares?: any;\n authConfigs?: any;\n prismaQueryOptions?: any;\n dtos: {\n create?: any;\n update?: any;\n query?: any;\n model?: any;\n };\n schemas: {\n create?: any;\n update?: any;\n query?: any;\n model?: any;\n };\n } = {\n dtos: {},\n schemas: {},\n };\n\n try {\n if (fs.existsSync(middlewaresFile)) {\n const middlewareModule = await import(middlewaresFile);\n result.middlewares = middlewareModule;\n }\n } catch (error) {\n console.error(\n `Error importing middlewares for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(authConfigsFile)) {\n const authConfigsModule = await import(authConfigsFile);\n result.authConfigs = authConfigsModule.default || authConfigsModule;\n }\n } catch (error) {\n console.error(\n `Error importing auth configs for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(prismaQueryOptionsFile)) {\n const prismaQueryOptionsModule = await import(prismaQueryOptionsFile);\n result.prismaQueryOptions =\n prismaQueryOptionsModule.default || prismaQueryOptionsModule;\n }\n } catch (error) {\n console.error(\n `Error importing prisma query options for model \"${modelName}\":`,\n error\n );\n }\n\n // Import DTOs\n const pascalModelName = pascalCase(modelName);\n try {\n if (fs.existsSync(modelDtoFile)) {\n const modelDtoModule = await import(modelDtoFile);\n result.dtos.model =\n modelDtoModule.default || modelDtoModule[`${pascalModelName}Dto`];\n }\n } catch (error) {\n console.error(\n `Error importing model main DTO for model \"${modelName} ${pascalModelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(createDtoFile)) {\n const createDtoModule = await import(createDtoFile);\n result.dtos.create =\n createDtoModule.default ||\n createDtoModule[`Create${pascalModelName}Dto`];\n }\n } catch (error) {\n console.error(\n `Error importing create DTO for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(updateDtoFile)) {\n const updateDtoModule = await import(updateDtoFile);\n result.dtos.update =\n updateDtoModule.default ||\n updateDtoModule[`Update${pascalModelName}Dto`];\n }\n } catch (error) {\n console.error(\n `Error importing update DTO for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(queryDtoFile)) {\n const queryDtoModule = await import(queryDtoFile);\n result.dtos.query =\n queryDtoModule.default || queryDtoModule[`Query${pascalModelName}Dto`];\n }\n } catch (error) {\n console.error(`Error importing query DTO for model \"${modelName}\":`, error);\n }\n\n try {\n if (fs.existsSync(modelSchemaFile)) {\n const modelSchemaModule = await import(modelSchemaFile);\n result.dtos.model =\n modelSchemaModule.default ||\n modelSchemaModule[`${pascalModelName}Schema`];\n }\n } catch (error) {\n console.error(\n `Error importing create Schema for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(createSchemaFile)) {\n const createSchemaModule = await import(createSchemaFile);\n result.dtos.create =\n createSchemaModule.default ||\n createSchemaModule[`Create${pascalModelName}Schema`];\n }\n } catch (error) {\n console.error(\n `Error importing create Schema for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(updateSchemaFile)) {\n const updateSchemaModule = await import(updateSchemaFile);\n result.dtos.update =\n updateSchemaModule.default ||\n updateSchemaModule[`Update${pascalModelName}Schema`];\n }\n } catch (error) {\n console.error(\n `Error importing update Schema for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(querySchemaFile)) {\n const querySchemaModule = await import(querySchemaFile);\n result.dtos.query =\n querySchemaModule.default ||\n querySchemaModule[`Query${pascalModelName}Schema`];\n }\n } catch (error) {\n console.error(\n `Error importing query Schema for model \"${modelName}\":`,\n error\n );\n }\n\n prismaModelsModules[modelName] = result;\n\n return result;\n}\n\nexport type ModelFieldDefition = {\n name: string;\n type: string;\n isUnique: boolean;\n};\n\n/**\n * Represents the structure of relation fields for Prisma models.\n * It includes both singular (one-to-one) and list (one-to-many) relationships.\n *\n * @typedef {Object} RelationFields\n * @property {Array<{name: string, type: string}>} singular - List of singular relationships.\n * @property {Array<{name: string, type: string}>} list - List of list relationships.\n */\nexport type RelationFields = {\n singular: Omit<ModelFieldDefition, \"isUnique\">[];\n list: Omit<ModelFieldDefition, \"isUnique\">[];\n};\n\nconst schemaFolderPath =\n process.env.PRISMA_SCHEMA_PATH || arkosEnv.PRISMA_SCHEMA_PATH;\n\n/**\n * Reads the Prisma schema files and extracts all model definitions,\n * identifying their relations (one-to-one and one-to-many).\n */\nconst prismaModelRelationFields: Record<string, RelationFields> = {};\n\nconst prismaContent: string[] = [];\n\nfunction getAllPrismaFiles(dirPath: string, fileList: string[] = []) {\n const files = fs.readdirSync(dirPath);\n\n files?.forEach((file) => {\n const filePath = path.join(dirPath, file);\n const stat = fs.statSync(filePath);\n\n // Skip migrations folder\n if (stat.isDirectory() && file !== \"migrations\") {\n fileList = getAllPrismaFiles(filePath, fileList);\n } else if (stat.isFile() && file.endsWith(\".prisma\")) {\n fileList.push(filePath);\n }\n });\n\n return fileList;\n}\n\n// const prismaRootDir = \"\"; // Adjust this path if needed\nconst files = getAllPrismaFiles(\"./prisma\");\n\nfor (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\");\n prismaContent.push(content);\n}\n\nconst modelRegex = /model\\s+(\\w+)\\s*{/g;\nconst models: string[] = [];\nexport const prismaModelsUniqueFields: Record<string, ModelFieldDefition[]> =\n [] as any;\n\nprismaContent.join(\"\\n\").replace(modelRegex, (_, modelName) => {\n if (!models.includes(modelName)) models.push(camelCase(modelName.trim()));\n return modelName;\n});\n\nfor (const model of models) {\n const modelName = pascalCase(model);\n\n let modelFile;\n for (const file of files) {\n const filePath = path.join(file);\n const stats = fs.statSync(filePath);\n\n if (stats.isFile()) {\n const content = fs.readFileSync(filePath, \"utf-8\");\n prismaContent.push(content);\n if (content.includes(`model ${modelName} {`)) {\n modelFile = file;\n break;\n }\n }\n }\n\n if (!modelFile) {\n throw new Error(`Model ${modelName} not found`);\n }\n\n const content = fs.readFileSync(path.join(modelFile), \"utf-8\");\n\n const modelStart = content.indexOf(`model ${modelName} {`);\n const modelEnd = content.indexOf(\"}\", modelStart);\n const modelDefinition = content.slice(modelStart, modelEnd);\n\n const relations: RelationFields = {\n singular: [],\n list: [],\n };\n const lines = modelDefinition.split(\"\\n\");\n\n for (const line of lines) {\n const trimmedLine = line.trim();\n\n if (\n !trimmedLine ||\n trimmedLine.startsWith(\"model\") ||\n trimmedLine.startsWith(\"//\")\n )\n continue;\n\n const [fieldName, type] = trimmedLine.split(/\\s+/);\n const isUnique = trimmedLine.includes(\"@unique\");\n\n if (isUnique)\n prismaModelsUniqueFields[model] = [\n ...(prismaModelsUniqueFields[model] || []),\n { name: fieldName, type, isUnique },\n ];\n\n const cleanType = type?.replace(\"[]\", \"\").replace(\"?\", \"\");\n\n if (\n trimmedLine.includes(\"@relation\") ||\n trimmedLine.match(/\\s+\\w+(\\[\\])?(\\s+@|$)/) ||\n models.includes(camelCase(cleanType || \"\"))\n ) {\n const modelStart = content.indexOf(`enum ${cleanType} {`);\n\n if (\n !cleanType ||\n modelStart >= 0 ||\n cleanType === \"String\" ||\n cleanType === \"Int\" ||\n cleanType === \"Float\" ||\n cleanType === \"Boolean\" ||\n cleanType === \"DateTime\" ||\n cleanType === \"Bytes\" ||\n cleanType === \"Decimal\" ||\n cleanType === \"BigInt\" ||\n cleanType === \"Json\"\n ) {\n continue;\n }\n\n if (!type?.includes(\"[]\")) {\n relations.singular.push({\n name: fieldName,\n type: cleanType,\n });\n } else {\n relations.list.push({\n name: fieldName,\n type: cleanType,\n });\n }\n }\n\n prismaModelRelationFields[modelName] = relations;\n }\n}\n\n/**\n * Retrieves the relations for a given Prisma model.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\").\n * @returns {RelationFields|undefined} The relation fields for the model, or `undefined` if no relations are found.\n */\nexport function getPrismaModelRelations(modelName: string) {\n modelName = pascalCase(modelName);\n\n if (!(modelName in prismaModelRelationFields)) return;\n return prismaModelRelationFields[modelName];\n}\n\n/**\n * Retrieves all the model names from the Prisma schema.\n *\n * @returns {string[]} An array of model names (e.g., [\"User\", \"Post\"]).\n */\nfunction getModels() {\n return models;\n}\n\n/** Retuns a given model unique fields\n * @param {string} modelName - The name of model in PascalCase\n * @returns {string[]} An array of all unique fields,\n */\nfunction getModelUniqueFields(modelName: string) {\n return prismaModelsUniqueFields[modelName];\n}\n\nexport { models, getModels, getModelUniqueFields, prismaModelRelationFields };\n"]}
|
|
@@ -174,8 +174,7 @@ function getAllPrismaFiles(dirPath, fileList = []) {
|
|
|
174
174
|
});
|
|
175
175
|
return fileList;
|
|
176
176
|
}
|
|
177
|
-
const
|
|
178
|
-
const files = getAllPrismaFiles(prismaRootDir);
|
|
177
|
+
const files = getAllPrismaFiles("./prisma");
|
|
179
178
|
for (const file of files) {
|
|
180
179
|
const content = fs.readFileSync(file, "utf-8");
|
|
181
180
|
prismaContent.push(content);
|
|
@@ -192,7 +191,7 @@ for (const model of models) {
|
|
|
192
191
|
const modelName = pascalCase(model);
|
|
193
192
|
let modelFile;
|
|
194
193
|
for (const file of files) {
|
|
195
|
-
const filePath = path.join(
|
|
194
|
+
const filePath = path.join(file);
|
|
196
195
|
const stats = fs.statSync(filePath);
|
|
197
196
|
if (stats.isFile()) {
|
|
198
197
|
const content = fs.readFileSync(filePath, "utf-8");
|
|
@@ -206,7 +205,7 @@ for (const model of models) {
|
|
|
206
205
|
if (!modelFile) {
|
|
207
206
|
throw new Error(`Model ${modelName} not found`);
|
|
208
207
|
}
|
|
209
|
-
const content = fs.readFileSync(path.join(
|
|
208
|
+
const content = fs.readFileSync(path.join(modelFile), "utf-8");
|
|
210
209
|
const modelStart = content.indexOf(`model ${modelName} {`);
|
|
211
210
|
const modelEnd = content.indexOf("}", modelStart);
|
|
212
211
|
const modelDefinition = content.slice(modelStart, modelEnd);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/models.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../../utils/helpers/change-case.helpers\";\nimport arkosEnv from \"../arkos-env\";\nimport { userFileExtension } from \"./fs.helpers\";\n\nexport let prismaModelsModules: Record<\n string,\n Awaited<ReturnType<typeof importPrismaModelModules>>\n> = {};\n\nexport function getModelModules(modelName: string) {\n return prismaModelsModules[kebabCase(modelName)];\n}\n\n/**\n * Dynamically imports model-specific modules like middlewares, auth configurations,\n * prisma query options, and DTOs for a given model.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\", \"Post\").\n * @returns {Promise<Object>} An object containing the imported modules: `middlewares`, `authConfigs`, `prismaQueryOptions`, and `dtos`.\n */\nexport async function importPrismaModelModules(modelName: string) {\n const kebabModelName = kebabCase(modelName);\n const lowerModelName = modelName.toLowerCase();\n\n const moduleDir = path.resolve(process.cwd(), \"src\", \"modules\", modelName);\n const dtosDir = path.join(moduleDir, \"dtos\");\n const schemasDir = path.join(moduleDir, \"schemas\");\n\n const middlewaresFile = path.join(\n moduleDir,\n `${kebabModelName}.middlewares.${userFileExtension}`\n );\n const authConfigsFile = path.join(\n moduleDir,\n `${kebabModelName}.auth-configs.${userFileExtension}`\n );\n const prismaQueryOptionsFile = path.join(\n moduleDir,\n `${kebabModelName}.prisma-query-options.${userFileExtension}`\n );\n\n // Define DTO file paths\n const modelDtoFile = path.join(\n dtosDir,\n `${lowerModelName}.dto.${userFileExtension}`\n );\n const createDtoFile = path.join(\n dtosDir,\n `create-${lowerModelName}.dto.${userFileExtension}`\n );\n const updateDtoFile = path.join(\n dtosDir,\n `update-${lowerModelName}.dto.${userFileExtension}`\n );\n const queryDtoFile = path.join(\n dtosDir,\n `query-${lowerModelName}.dto.${userFileExtension}`\n );\n\n const modelSchemaFile = path.join(\n schemasDir,\n `${lowerModelName}.schema.${userFileExtension}`\n );\n const createSchemaFile = path.join(\n schemasDir,\n `create-${lowerModelName}.schema.${userFileExtension}`\n );\n const updateSchemaFile = path.join(\n schemasDir,\n `update-${lowerModelName}.schema.${userFileExtension}`\n );\n const querySchemaFile = path.join(\n schemasDir,\n `query-${lowerModelName}.schema.${userFileExtension}`\n );\n\n const result: {\n middlewares?: any;\n authConfigs?: any;\n prismaQueryOptions?: any;\n dtos: {\n create?: any;\n update?: any;\n query?: any;\n model?: any;\n };\n schemas: {\n create?: any;\n update?: any;\n query?: any;\n model?: any;\n };\n } = {\n dtos: {},\n schemas: {},\n };\n\n try {\n if (fs.existsSync(middlewaresFile)) {\n const middlewareModule = await import(middlewaresFile);\n result.middlewares = middlewareModule;\n }\n } catch (error) {\n console.error(\n `Error importing middlewares for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(authConfigsFile)) {\n const authConfigsModule = await import(authConfigsFile);\n result.authConfigs = authConfigsModule.default || authConfigsModule;\n }\n } catch (error) {\n console.error(\n `Error importing auth configs for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(prismaQueryOptionsFile)) {\n const prismaQueryOptionsModule = await import(prismaQueryOptionsFile);\n result.prismaQueryOptions =\n prismaQueryOptionsModule.default || prismaQueryOptionsModule;\n }\n } catch (error) {\n console.error(\n `Error importing prisma query options for model \"${modelName}\":`,\n error\n );\n }\n\n // Import DTOs\n const pascalModelName = pascalCase(modelName);\n try {\n if (fs.existsSync(modelDtoFile)) {\n const modelDtoModule = await import(modelDtoFile);\n result.dtos.model =\n modelDtoModule.default || modelDtoModule[`${pascalModelName}Dto`];\n }\n } catch (error) {\n console.error(\n `Error importing model main DTO for model \"${modelName} ${pascalModelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(createDtoFile)) {\n const createDtoModule = await import(createDtoFile);\n result.dtos.create =\n createDtoModule.default ||\n createDtoModule[`Create${pascalModelName}Dto`];\n }\n } catch (error) {\n console.error(\n `Error importing create DTO for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(updateDtoFile)) {\n const updateDtoModule = await import(updateDtoFile);\n result.dtos.update =\n updateDtoModule.default ||\n updateDtoModule[`Update${pascalModelName}Dto`];\n }\n } catch (error) {\n console.error(\n `Error importing update DTO for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(queryDtoFile)) {\n const queryDtoModule = await import(queryDtoFile);\n result.dtos.query =\n queryDtoModule.default || queryDtoModule[`Query${pascalModelName}Dto`];\n }\n } catch (error) {\n console.error(`Error importing query DTO for model \"${modelName}\":`, error);\n }\n\n try {\n if (fs.existsSync(modelSchemaFile)) {\n const modelSchemaModule = await import(modelSchemaFile);\n result.dtos.model =\n modelSchemaModule.default ||\n modelSchemaModule[`${pascalModelName}Schema`];\n }\n } catch (error) {\n console.error(\n `Error importing create Schema for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(createSchemaFile)) {\n const createSchemaModule = await import(createSchemaFile);\n result.dtos.create =\n createSchemaModule.default ||\n createSchemaModule[`Create${pascalModelName}Schema`];\n }\n } catch (error) {\n console.error(\n `Error importing create Schema for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(updateSchemaFile)) {\n const updateSchemaModule = await import(updateSchemaFile);\n result.dtos.update =\n updateSchemaModule.default ||\n updateSchemaModule[`Update${pascalModelName}Schema`];\n }\n } catch (error) {\n console.error(\n `Error importing update Schema for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(querySchemaFile)) {\n const querySchemaModule = await import(querySchemaFile);\n result.dtos.query =\n querySchemaModule.default ||\n querySchemaModule[`Query${pascalModelName}Schema`];\n }\n } catch (error) {\n console.error(\n `Error importing query Schema for model \"${modelName}\":`,\n error\n );\n }\n\n prismaModelsModules[modelName] = result;\n\n return result;\n}\n\nexport type ModelFieldDefition = {\n name: string;\n type: string;\n isUnique: boolean;\n};\n\n/**\n * Represents the structure of relation fields for Prisma models.\n * It includes both singular (one-to-one) and list (one-to-many) relationships.\n *\n * @typedef {Object} RelationFields\n * @property {Array<{name: string, type: string}>} singular - List of singular relationships.\n * @property {Array<{name: string, type: string}>} list - List of list relationships.\n */\nexport type RelationFields = {\n singular: Omit<ModelFieldDefition, \"isUnique\">[];\n list: Omit<ModelFieldDefition, \"isUnique\">[];\n};\n\nconst schemaFolderPath =\n process.env.PRISMA_SCHEMA_PATH || arkosEnv.PRISMA_SCHEMA_PATH;\n\n/**\n * Reads the Prisma schema files and extracts all model definitions,\n * identifying their relations (one-to-one and one-to-many).\n */\nconst prismaModelRelationFields: Record<string, RelationFields> = {};\n\nconst prismaContent: string[] = [];\n\nfunction getAllPrismaFiles(dirPath: string, fileList: string[] = []) {\n const files = fs.readdirSync(dirPath);\n\n files?.forEach((file) => {\n const filePath = path.join(dirPath, file);\n const stat = fs.statSync(filePath);\n\n // Skip migrations folder\n if (stat.isDirectory() && file !== \"migrations\") {\n fileList = getAllPrismaFiles(filePath, fileList);\n } else if (stat.isFile() && file.endsWith(\".prisma\")) {\n fileList.push(filePath);\n }\n });\n\n return fileList;\n}\n\nconst prismaRootDir = \"./prisma\"; // Adjust this path if needed\nconst files = getAllPrismaFiles(prismaRootDir);\n\nfor (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\");\n prismaContent.push(content);\n}\n\nconst modelRegex = /model\\s+(\\w+)\\s*{/g;\nconst models: string[] = [];\nexport const prismaModelsUniqueFields: Record<string, ModelFieldDefition[]> =\n [] as any;\n\nprismaContent.join(\"\\n\").replace(modelRegex, (_, modelName) => {\n if (!models.includes(modelName)) models.push(camelCase(modelName.trim()));\n return modelName;\n});\n\nfor (const model of models) {\n const modelName = pascalCase(model);\n\n let modelFile;\n for (const file of files) {\n const filePath = path.join(prismaRootDir, file);\n const stats = fs.statSync(filePath);\n\n if (stats.isFile()) {\n const content = fs.readFileSync(filePath, \"utf-8\");\n prismaContent.push(content);\n if (content.includes(`model ${modelName} {`)) {\n modelFile = file;\n break;\n }\n }\n }\n\n if (!modelFile) {\n throw new Error(`Model ${modelName} not found`);\n }\n\n const content = fs.readFileSync(path.join(prismaRootDir, modelFile), \"utf-8\");\n\n const modelStart = content.indexOf(`model ${modelName} {`);\n const modelEnd = content.indexOf(\"}\", modelStart);\n const modelDefinition = content.slice(modelStart, modelEnd);\n\n const relations: RelationFields = {\n singular: [],\n list: [],\n };\n const lines = modelDefinition.split(\"\\n\");\n\n for (const line of lines) {\n const trimmedLine = line.trim();\n\n if (\n !trimmedLine ||\n trimmedLine.startsWith(\"model\") ||\n trimmedLine.startsWith(\"//\")\n )\n continue;\n\n const [fieldName, type] = trimmedLine.split(/\\s+/);\n const isUnique = trimmedLine.includes(\"@unique\");\n\n if (isUnique)\n prismaModelsUniqueFields[model] = [\n ...(prismaModelsUniqueFields[model] || []),\n { name: fieldName, type, isUnique },\n ];\n\n const cleanType = type?.replace(\"[]\", \"\").replace(\"?\", \"\");\n\n if (\n trimmedLine.includes(\"@relation\") ||\n trimmedLine.match(/\\s+\\w+(\\[\\])?(\\s+@|$)/) ||\n models.includes(camelCase(cleanType || \"\"))\n ) {\n const modelStart = content.indexOf(`enum ${cleanType} {`);\n\n if (\n !cleanType ||\n modelStart >= 0 ||\n cleanType === \"String\" ||\n cleanType === \"Int\" ||\n cleanType === \"Float\" ||\n cleanType === \"Boolean\" ||\n cleanType === \"DateTime\" ||\n cleanType === \"Bytes\" ||\n cleanType === \"Decimal\" ||\n cleanType === \"BigInt\" ||\n cleanType === \"Json\"\n ) {\n continue;\n }\n\n if (!type?.includes(\"[]\")) {\n relations.singular.push({\n name: fieldName,\n type: cleanType,\n });\n } else {\n relations.list.push({\n name: fieldName,\n type: cleanType,\n });\n }\n }\n\n prismaModelRelationFields[modelName] = relations;\n }\n}\n\n/**\n * Retrieves the relations for a given Prisma model.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\").\n * @returns {RelationFields|undefined} The relation fields for the model, or `undefined` if no relations are found.\n */\nexport function getPrismaModelRelations(modelName: string) {\n modelName = pascalCase(modelName);\n\n if (!(modelName in prismaModelRelationFields)) return;\n return prismaModelRelationFields[modelName];\n}\n\n/**\n * Retrieves all the model names from the Prisma schema.\n *\n * @returns {string[]} An array of model names (e.g., [\"User\", \"Post\"]).\n */\nfunction getModels() {\n return models;\n}\n\n/** Retuns a given model unique fields\n * @param {string} modelName - The name of model in PascalCase\n * @returns {string[]} An array of all unique fields,\n */\nfunction getModelUniqueFields(modelName: string) {\n return prismaModelsUniqueFields[modelName];\n}\n\nexport { models, getModels, getModelUniqueFields, prismaModelRelationFields };\n"]}
|
|
1
|
+
{"version":3,"file":"models.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/models.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../../utils/helpers/change-case.helpers\";\nimport arkosEnv from \"../arkos-env\";\nimport { userFileExtension } from \"./fs.helpers\";\n\nexport let prismaModelsModules: Record<\n string,\n Awaited<ReturnType<typeof importPrismaModelModules>>\n> = {};\n\nexport function getModelModules(modelName: string) {\n return prismaModelsModules[kebabCase(modelName)];\n}\n\n/**\n * Dynamically imports model-specific modules like middlewares, auth configurations,\n * prisma query options, and DTOs for a given model.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\", \"Post\").\n * @returns {Promise<Object>} An object containing the imported modules: `middlewares`, `authConfigs`, `prismaQueryOptions`, and `dtos`.\n */\nexport async function importPrismaModelModules(modelName: string) {\n const kebabModelName = kebabCase(modelName);\n const lowerModelName = modelName.toLowerCase();\n\n const moduleDir = path.resolve(process.cwd(), \"src\", \"modules\", modelName);\n const dtosDir = path.join(moduleDir, \"dtos\");\n const schemasDir = path.join(moduleDir, \"schemas\");\n\n const middlewaresFile = path.join(\n moduleDir,\n `${kebabModelName}.middlewares.${userFileExtension}`\n );\n const authConfigsFile = path.join(\n moduleDir,\n `${kebabModelName}.auth-configs.${userFileExtension}`\n );\n const prismaQueryOptionsFile = path.join(\n moduleDir,\n `${kebabModelName}.prisma-query-options.${userFileExtension}`\n );\n\n // Define DTO file paths\n const modelDtoFile = path.join(\n dtosDir,\n `${lowerModelName}.dto.${userFileExtension}`\n );\n const createDtoFile = path.join(\n dtosDir,\n `create-${lowerModelName}.dto.${userFileExtension}`\n );\n const updateDtoFile = path.join(\n dtosDir,\n `update-${lowerModelName}.dto.${userFileExtension}`\n );\n const queryDtoFile = path.join(\n dtosDir,\n `query-${lowerModelName}.dto.${userFileExtension}`\n );\n\n const modelSchemaFile = path.join(\n schemasDir,\n `${lowerModelName}.schema.${userFileExtension}`\n );\n const createSchemaFile = path.join(\n schemasDir,\n `create-${lowerModelName}.schema.${userFileExtension}`\n );\n const updateSchemaFile = path.join(\n schemasDir,\n `update-${lowerModelName}.schema.${userFileExtension}`\n );\n const querySchemaFile = path.join(\n schemasDir,\n `query-${lowerModelName}.schema.${userFileExtension}`\n );\n\n const result: {\n middlewares?: any;\n authConfigs?: any;\n prismaQueryOptions?: any;\n dtos: {\n create?: any;\n update?: any;\n query?: any;\n model?: any;\n };\n schemas: {\n create?: any;\n update?: any;\n query?: any;\n model?: any;\n };\n } = {\n dtos: {},\n schemas: {},\n };\n\n try {\n if (fs.existsSync(middlewaresFile)) {\n const middlewareModule = await import(middlewaresFile);\n result.middlewares = middlewareModule;\n }\n } catch (error) {\n console.error(\n `Error importing middlewares for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(authConfigsFile)) {\n const authConfigsModule = await import(authConfigsFile);\n result.authConfigs = authConfigsModule.default || authConfigsModule;\n }\n } catch (error) {\n console.error(\n `Error importing auth configs for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(prismaQueryOptionsFile)) {\n const prismaQueryOptionsModule = await import(prismaQueryOptionsFile);\n result.prismaQueryOptions =\n prismaQueryOptionsModule.default || prismaQueryOptionsModule;\n }\n } catch (error) {\n console.error(\n `Error importing prisma query options for model \"${modelName}\":`,\n error\n );\n }\n\n // Import DTOs\n const pascalModelName = pascalCase(modelName);\n try {\n if (fs.existsSync(modelDtoFile)) {\n const modelDtoModule = await import(modelDtoFile);\n result.dtos.model =\n modelDtoModule.default || modelDtoModule[`${pascalModelName}Dto`];\n }\n } catch (error) {\n console.error(\n `Error importing model main DTO for model \"${modelName} ${pascalModelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(createDtoFile)) {\n const createDtoModule = await import(createDtoFile);\n result.dtos.create =\n createDtoModule.default ||\n createDtoModule[`Create${pascalModelName}Dto`];\n }\n } catch (error) {\n console.error(\n `Error importing create DTO for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(updateDtoFile)) {\n const updateDtoModule = await import(updateDtoFile);\n result.dtos.update =\n updateDtoModule.default ||\n updateDtoModule[`Update${pascalModelName}Dto`];\n }\n } catch (error) {\n console.error(\n `Error importing update DTO for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(queryDtoFile)) {\n const queryDtoModule = await import(queryDtoFile);\n result.dtos.query =\n queryDtoModule.default || queryDtoModule[`Query${pascalModelName}Dto`];\n }\n } catch (error) {\n console.error(`Error importing query DTO for model \"${modelName}\":`, error);\n }\n\n try {\n if (fs.existsSync(modelSchemaFile)) {\n const modelSchemaModule = await import(modelSchemaFile);\n result.dtos.model =\n modelSchemaModule.default ||\n modelSchemaModule[`${pascalModelName}Schema`];\n }\n } catch (error) {\n console.error(\n `Error importing create Schema for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(createSchemaFile)) {\n const createSchemaModule = await import(createSchemaFile);\n result.dtos.create =\n createSchemaModule.default ||\n createSchemaModule[`Create${pascalModelName}Schema`];\n }\n } catch (error) {\n console.error(\n `Error importing create Schema for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(updateSchemaFile)) {\n const updateSchemaModule = await import(updateSchemaFile);\n result.dtos.update =\n updateSchemaModule.default ||\n updateSchemaModule[`Update${pascalModelName}Schema`];\n }\n } catch (error) {\n console.error(\n `Error importing update Schema for model \"${modelName}\":`,\n error\n );\n }\n\n try {\n if (fs.existsSync(querySchemaFile)) {\n const querySchemaModule = await import(querySchemaFile);\n result.dtos.query =\n querySchemaModule.default ||\n querySchemaModule[`Query${pascalModelName}Schema`];\n }\n } catch (error) {\n console.error(\n `Error importing query Schema for model \"${modelName}\":`,\n error\n );\n }\n\n prismaModelsModules[modelName] = result;\n\n return result;\n}\n\nexport type ModelFieldDefition = {\n name: string;\n type: string;\n isUnique: boolean;\n};\n\n/**\n * Represents the structure of relation fields for Prisma models.\n * It includes both singular (one-to-one) and list (one-to-many) relationships.\n *\n * @typedef {Object} RelationFields\n * @property {Array<{name: string, type: string}>} singular - List of singular relationships.\n * @property {Array<{name: string, type: string}>} list - List of list relationships.\n */\nexport type RelationFields = {\n singular: Omit<ModelFieldDefition, \"isUnique\">[];\n list: Omit<ModelFieldDefition, \"isUnique\">[];\n};\n\nconst schemaFolderPath =\n process.env.PRISMA_SCHEMA_PATH || arkosEnv.PRISMA_SCHEMA_PATH;\n\n/**\n * Reads the Prisma schema files and extracts all model definitions,\n * identifying their relations (one-to-one and one-to-many).\n */\nconst prismaModelRelationFields: Record<string, RelationFields> = {};\n\nconst prismaContent: string[] = [];\n\nfunction getAllPrismaFiles(dirPath: string, fileList: string[] = []) {\n const files = fs.readdirSync(dirPath);\n\n files?.forEach((file) => {\n const filePath = path.join(dirPath, file);\n const stat = fs.statSync(filePath);\n\n // Skip migrations folder\n if (stat.isDirectory() && file !== \"migrations\") {\n fileList = getAllPrismaFiles(filePath, fileList);\n } else if (stat.isFile() && file.endsWith(\".prisma\")) {\n fileList.push(filePath);\n }\n });\n\n return fileList;\n}\n\n// const prismaRootDir = \"\"; // Adjust this path if needed\nconst files = getAllPrismaFiles(\"./prisma\");\n\nfor (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\");\n prismaContent.push(content);\n}\n\nconst modelRegex = /model\\s+(\\w+)\\s*{/g;\nconst models: string[] = [];\nexport const prismaModelsUniqueFields: Record<string, ModelFieldDefition[]> =\n [] as any;\n\nprismaContent.join(\"\\n\").replace(modelRegex, (_, modelName) => {\n if (!models.includes(modelName)) models.push(camelCase(modelName.trim()));\n return modelName;\n});\n\nfor (const model of models) {\n const modelName = pascalCase(model);\n\n let modelFile;\n for (const file of files) {\n const filePath = path.join(file);\n const stats = fs.statSync(filePath);\n\n if (stats.isFile()) {\n const content = fs.readFileSync(filePath, \"utf-8\");\n prismaContent.push(content);\n if (content.includes(`model ${modelName} {`)) {\n modelFile = file;\n break;\n }\n }\n }\n\n if (!modelFile) {\n throw new Error(`Model ${modelName} not found`);\n }\n\n const content = fs.readFileSync(path.join(modelFile), \"utf-8\");\n\n const modelStart = content.indexOf(`model ${modelName} {`);\n const modelEnd = content.indexOf(\"}\", modelStart);\n const modelDefinition = content.slice(modelStart, modelEnd);\n\n const relations: RelationFields = {\n singular: [],\n list: [],\n };\n const lines = modelDefinition.split(\"\\n\");\n\n for (const line of lines) {\n const trimmedLine = line.trim();\n\n if (\n !trimmedLine ||\n trimmedLine.startsWith(\"model\") ||\n trimmedLine.startsWith(\"//\")\n )\n continue;\n\n const [fieldName, type] = trimmedLine.split(/\\s+/);\n const isUnique = trimmedLine.includes(\"@unique\");\n\n if (isUnique)\n prismaModelsUniqueFields[model] = [\n ...(prismaModelsUniqueFields[model] || []),\n { name: fieldName, type, isUnique },\n ];\n\n const cleanType = type?.replace(\"[]\", \"\").replace(\"?\", \"\");\n\n if (\n trimmedLine.includes(\"@relation\") ||\n trimmedLine.match(/\\s+\\w+(\\[\\])?(\\s+@|$)/) ||\n models.includes(camelCase(cleanType || \"\"))\n ) {\n const modelStart = content.indexOf(`enum ${cleanType} {`);\n\n if (\n !cleanType ||\n modelStart >= 0 ||\n cleanType === \"String\" ||\n cleanType === \"Int\" ||\n cleanType === \"Float\" ||\n cleanType === \"Boolean\" ||\n cleanType === \"DateTime\" ||\n cleanType === \"Bytes\" ||\n cleanType === \"Decimal\" ||\n cleanType === \"BigInt\" ||\n cleanType === \"Json\"\n ) {\n continue;\n }\n\n if (!type?.includes(\"[]\")) {\n relations.singular.push({\n name: fieldName,\n type: cleanType,\n });\n } else {\n relations.list.push({\n name: fieldName,\n type: cleanType,\n });\n }\n }\n\n prismaModelRelationFields[modelName] = relations;\n }\n}\n\n/**\n * Retrieves the relations for a given Prisma model.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\").\n * @returns {RelationFields|undefined} The relation fields for the model, or `undefined` if no relations are found.\n */\nexport function getPrismaModelRelations(modelName: string) {\n modelName = pascalCase(modelName);\n\n if (!(modelName in prismaModelRelationFields)) return;\n return prismaModelRelationFields[modelName];\n}\n\n/**\n * Retrieves all the model names from the Prisma schema.\n *\n * @returns {string[]} An array of model names (e.g., [\"User\", \"Post\"]).\n */\nfunction getModels() {\n return models;\n}\n\n/** Retuns a given model unique fields\n * @param {string} modelName - The name of model in PascalCase\n * @returns {string[]} An array of all unique fields,\n */\nfunction getModelUniqueFields(modelName: string) {\n return prismaModelsUniqueFields[modelName];\n}\n\nexport { models, getModels, getModelUniqueFields, prismaModelRelationFields };\n"]}
|