const { makeKyselyHook } = require("kanel-kysely"); const { resolveType, escapeIdentifier } = require("kanel"); const { recase } = require("@kristiandupont/recase"); const toPascalCase = recase("snake", "pascal"); module.exports = { connection: "postgres://neondb_owner:npg_sOVmj8vWq2zG@ep-withered-king-adiz9gpi-pooler.c-2.us-east-1.aws.neon.tech:5432/neondb?sslmode=require&channel_binding=true", enumStyle: "type", outputPath: "./database/generated", preRenderHooks: [makeKyselyHook()], generateIdentifierType: (column, details, config) => { const name = escapeIdentifier( toPascalCase(details.name) + toPascalCase(column.name) ); const innerType = resolveType(column, details, { ...config, // Explicitly disable identifier resolution so we get the actual inner type here generateIdentifierType: undefined, }); const imports = []; let type = innerType; if (typeof innerType === "object") { // Handle non-primitives type = innerType.name; imports.push(...innerType.typeImports); } return { declarationType: "typeDeclaration", name, exportAs: "named", typeDefinition: [`${type}`], typeImports: imports, comment: [`Identifier type for ${details.schemaName}.${details.name}`], }; }, customTypeMap: { "pg_catalog.timestamp": "string", }, };