UNPKG

@autobe/compiler

Version:

AI backend server code generator

5 lines 4.16 kB
export const AutoBeCompilerRealizeTemplateOfPostgres: Record<string, string> = { ".env.local": "API_PORT=37001\nJWT_SECRET_KEY=your_jwt_secret_key\n\nPOSTGRES_HOST=127.0.0.1\nPOSTGRES_PORT=5432\nPOSTGRES_DATABASE=wrtnlabs\nPOSTGRES_SCHEMA=autobe\nPOSTGRES_USERNAME=autobe\nPOSTGRES_PASSWORD=1234\nPOSTGRES_URL=postgresql://${POSTGRES_USERNAME}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DATABASE}?schema=${POSTGRES_SCHEMA}", "src/MyGlobal.ts": "import { PrismaPg } from \"@prisma/adapter-pg\";\nimport { PrismaClient } from \"@prisma/client\";\nimport dotenv from \"dotenv\";\nimport dotenvExpand from \"dotenv-expand\";\nimport { Singleton } from \"tstl\";\nimport typia from \"typia\";\n\n/* eslint-disable */\nexport class MyGlobal {\n public static testing: boolean = false;\n\n public static get env(): MyGlobal.IEnvironments {\n return environments.get();\n }\n\n public static get prisma(): PrismaClient {\n return prisma.get();\n }\n}\n\nexport namespace MyGlobal {\n export interface IEnvironments {\n API_PORT: `${number}`;\n JWT_SECRET_KEY: string;\n\n POSTGRES_HOST: string;\n POSTGRES_PORT: `${number}`;\n POSTGRES_DATABASE: string;\n POSTGRES_SCHEMA: string;\n POSTGRES_USERNAME: string;\n POSTGRES_PASSWORD: string;\n POSTGRES_URL: string;\n }\n}\nconst environments = new Singleton(() => {\n const env = dotenv.config();\n dotenvExpand.expand(env);\n return typia.assert<MyGlobal.IEnvironments>(process.env);\n});\nconst prisma = new Singleton(\n () =>\n new PrismaClient({\n adapter: new PrismaPg(\n { connectionString: environments.get().POSTGRES_URL },\n { schema: environments.get().POSTGRES_SCHEMA },\n ),\n }),\n);\n", "src/executable/schema.ts": "import { PrismaPg } from \"@prisma/adapter-pg\";\nimport { PrismaClient } from \"@prisma/client\";\n\nimport { MyGlobal } from \"../MyGlobal\";\nimport { MySetupWizard } from \"../setup/MySetupWizard\";\n\nasync function execute(\n database: string,\n username: string,\n password: string,\n script: string,\n): Promise<void> {\n try {\n const prisma = new PrismaClient({\n adapter: new PrismaPg(\n {\n connectionString: `postgresql://${username}:${password}@${MyGlobal.env.POSTGRES_HOST}:${MyGlobal.env.POSTGRES_PORT}/${database}?schema=${MyGlobal.env.POSTGRES_SCHEMA}`,\n },\n { schema: MyGlobal.env.POSTGRES_SCHEMA },\n ),\n });\n const queries: string[] = script\n .split(\"\\n\")\n .map((str) => str.trim())\n .filter((str) => !!str);\n for (const query of queries)\n try {\n await prisma.$queryRawUnsafe(query);\n } catch (e) {\n console.log(e);\n }\n await prisma.$disconnect();\n } catch (err) {\n console.log(err);\n }\n}\n\nasync function main(): Promise<void> {\n const config = {\n database: MyGlobal.env.POSTGRES_DATABASE,\n schema: MyGlobal.env.POSTGRES_SCHEMA,\n username: MyGlobal.env.POSTGRES_USERNAME,\n password: MyGlobal.env.POSTGRES_PASSWORD,\n };\n const root = {\n account: process.argv[2] ?? \"postgres\",\n password: process.argv[3] ?? \"root\",\n };\n\n await execute(\n \"postgres\",\n root.account,\n root.password,\n `\n CREATE USER ${config.username} WITH ENCRYPTED PASSWORD '${config.password}';\n ALTER ROLE ${config.username} WITH CREATEDB\n CREATE DATABASE ${config.database} OWNER ${config.username};\n `,\n );\n\n await execute(\n config.database,\n root.account,\n root.password,\n `\n CREATE SCHEMA ${config.schema} AUTHORIZATION ${config.username};\n `,\n );\n\n console.log(\"------------------------------------------\");\n console.log(\"CREATE TABLES\");\n console.log(\"------------------------------------------\");\n MyGlobal.testing = true;\n await MySetupWizard.schema();\n\n console.log(\"------------------------------------------\");\n console.log(\"INITIAL DATA\");\n console.log(\"------------------------------------------\");\n await MySetupWizard.seed();\n}\nmain().catch((exp) => {\n console.log(exp);\n process.exit(-1);\n});\n" };