@aws/nx-plugin 1.0.0-rc.14 → 1.0.0-rc.16

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.
Files changed (25) hide show
  1. package/package.json +1 -1
  2. package/src/py/project/generator.js +8 -1
  3. package/src/py/project/generator.js.map +1 -1
  4. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +74 -322
  5. package/src/ts/rdb/files/config.json.template +14 -0
  6. package/src/ts/rdb/files/prisma.config.ts.template +5 -4
  7. package/src/ts/rdb/files/src/index.ts.template +0 -1
  8. package/src/ts/rdb/files/src/prisma.ts.template +26 -21
  9. package/src/ts/rdb/generator.d.ts +0 -4
  10. package/src/ts/rdb/generator.js +15 -7
  11. package/src/ts/rdb/generator.js.map +1 -1
  12. package/src/utils/files/common/scripts/src/rdb/pull-image.ts.template +16 -0
  13. package/src/utils/files/common/scripts/src/rdb/start-container.ts.template +102 -0
  14. package/src/utils/files/common/scripts/src/rdb/wait-for-db.ts.template +59 -0
  15. package/src/utils/rdb-constructs/files/cdk/app/dbs/__nameKebabCase__.ts.template +12 -2
  16. package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +6 -4
  17. package/src/utils/rdb-constructs/rdb-constructs.d.ts +1 -0
  18. package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
  19. package/src/utils/shared-rdb-scripts.d.ts +11 -0
  20. package/src/utils/shared-rdb-scripts.js +20 -0
  21. package/src/utils/shared-rdb-scripts.js.map +1 -0
  22. package/src/ts/rdb/files/scripts/pull-image.ts.template +0 -15
  23. package/src/ts/rdb/files/scripts/start-container.ts.template +0 -84
  24. package/src/ts/rdb/files/scripts/wait-for-db.ts.template +0 -55
  25. package/src/ts/rdb/files/src/constants.ts.template +0 -8
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws/nx-plugin",
3
- "version": "1.0.0-rc.14",
3
+ "version": "1.0.0-rc.16",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/awslabs/nx-plugin-for-aws.git",
@@ -173,11 +173,18 @@ const pyProjectGenerator = async (tree, schema) => {
173
173
  (0, nx_1.addGeneratorMetadata)(tree, fullyQualifiedName, exports.PY_PROJECT_GENERATOR_INFO);
174
174
  // Update root .gitignore
175
175
  (0, git_1.updateGitIgnore)(tree, '.', (patterns) => [...patterns, '/reports']);
176
- // Update project level .gitignore
176
+ // Update project level .gitignore. The cache directories are also kept out
177
+ // of type checking: `ty` respects .gitignore, and pytest creates and removes
178
+ // transient `pytest-cache-files-*` directories while the test and typecheck
179
+ // targets run concurrently, which would otherwise make `ty` fail with an I/O
180
+ // error when it scans one mid-deletion.
177
181
  (0, git_1.updateGitIgnore)(tree, dir, (patterns) => [
178
182
  ...patterns,
179
183
  '**/__pycache__',
180
184
  '.coverage',
185
+ '.pytest_cache',
186
+ 'pytest-cache-files-*',
187
+ '.ruff_cache',
181
188
  ]);
182
189
  await (0, metrics_1.addGeneratorMetricsIfApplicable)(tree, [exports.PY_PROJECT_GENERATOR_INFO]);
183
190
  await (0, config_1.ensurePythonLicenseCollector)(tree);
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/py/project/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/py/project/generator.ts"],"names":[],"mappings":"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"}
@@ -22,137 +22,6 @@ datasource db {
22
22
  "
23
23
  `;
24
24
 
25
- exports[`ts#rdb generator > should add mysql prisma dependencies when engine is MySQL > packages/db/scripts/pull-image.ts 1`] = `
26
- "import { spawnSync } from 'child_process';
27
-
28
- const ENGINE = 'docker';
29
- const image = process.argv[2];
30
-
31
- const inspect = spawnSync(ENGINE, ['image', 'inspect', image], {
32
- stdio: 'ignore',
33
- });
34
-
35
- if (inspect.status !== 0) {
36
- const pull = spawnSync(ENGINE, ['pull', image], { stdio: 'inherit' });
37
- if (pull.status !== 0) {
38
- process.exit(pull.status ?? 1);
39
- }
40
- }
41
- "
42
- `;
43
-
44
- exports[`ts#rdb generator > should add mysql prisma dependencies when engine is MySQL > packages/db/scripts/start-container.ts 1`] = `
45
- "import { spawn, spawnSync } from 'child_process';
46
-
47
- const ENGINE = 'docker';
48
-
49
- const [containerName, image, hostPort, dbName, dbPassword] =
50
- process.argv.slice(2);
51
-
52
- const containerExists = (): boolean =>
53
- spawnSync(ENGINE, ['container', 'inspect', containerName], {
54
- stdio: 'ignore',
55
- }).status === 0;
56
-
57
- const isRunning = (): boolean => {
58
- const result = spawnSync(
59
- ENGINE,
60
- ['container', 'inspect', '-f', '{{.State.Running}}', containerName],
61
- { encoding: 'utf-8' },
62
- );
63
- return result.status === 0 && result.stdout.trim() === 'true';
64
- };
65
-
66
- if (containerExists()) {
67
- if (!isRunning()) {
68
- const start = spawnSync(ENGINE, ['start', containerName], {
69
- stdio: 'inherit',
70
- });
71
- if (start.status !== 0) process.exit(start.status ?? 1);
72
- }
73
- } else {
74
- const runArgs = (
75
- \`run --rm --name \${containerName}\` +
76
- \` -e MYSQL_DATABASE=\${dbName}\` +
77
- \` -e MYSQL_ROOT_PASSWORD=\${dbPassword}\` +
78
- \` -p \${hostPort}:3306\` +
79
- \` -v \${containerName}-data:/var/lib/mysql\` +
80
- \` -d \${image}\`
81
- ).split(' ');
82
- const create = spawnSync(ENGINE, runArgs, { stdio: 'inherit' });
83
- if (create.status !== 0) process.exit(create.status ?? 1);
84
- }
85
-
86
- const logs = spawn(ENGINE, ['logs', '-f', containerName], {
87
- stdio: ['ignore', 'inherit', 'inherit'],
88
- });
89
-
90
- let exiting = false;
91
-
92
- const cleanup = () => {
93
- if (exiting) return;
94
- exiting = true;
95
- spawnSync(ENGINE, ['stop', containerName], { stdio: 'ignore' });
96
- logs.kill();
97
- process.exit(0);
98
- };
99
-
100
- process.on('SIGTERM', cleanup);
101
- process.on('SIGINT', cleanup);
102
- process.on('SIGHUP', cleanup);
103
-
104
- logs.on('exit', (code) => {
105
- if (!exiting) process.exit(code ?? 0);
106
- });
107
- "
108
- `;
109
-
110
- exports[`ts#rdb generator > should add mysql prisma dependencies when engine is MySQL > packages/db/scripts/wait-for-db.ts 1`] = `
111
- "import { createConnection, Connection } from 'mariadb';
112
-
113
- const noop = () => undefined;
114
-
115
- const [portArg, dbArg, userArg, passwordArg] = process.argv.slice(2);
116
- const timeoutAt = Date.now() + 60000;
117
-
118
- while (Date.now() < timeoutAt) {
119
- let conn: Connection | undefined;
120
- try {
121
- conn = await createConnection({
122
- host: 'localhost',
123
- port: parseInt(portArg),
124
- user: userArg,
125
- password: passwordArg,
126
- database: dbArg,
127
- connectTimeout: 500,
128
- allowPublicKeyRetrieval: true,
129
- });
130
- await conn.end();
131
- console.log('Database is ready.');
132
- process.exit(0);
133
- } catch {
134
- console.log('Database is not ready.');
135
- await conn?.end().catch(noop);
136
- }
137
- await new Promise((r) => setTimeout(r, 200));
138
- }
139
-
140
- throw new Error(\`Timed out waiting for mysql on port \${portArg}\`);
141
- "
142
- `;
143
-
144
- exports[`ts#rdb generator > should add mysql prisma dependencies when engine is MySQL > packages/db/src/constants.ts 1`] = `
145
- "export const DB_PACKAGE_NAME = 'Db';
146
-
147
- // Local development connection details (used when SERVE_LOCAL=true, see serve-local Nx target)
148
- export const LOCAL_DB_PORT = 3306;
149
- export const LOCAL_DB_HOST = 'localhost';
150
- export const LOCAL_DB_NAME = 'database_name';
151
- export const LOCAL_DB_USER = 'root';
152
- export const LOCAL_DB_PASSWORD = 'password';
153
- "
154
- `;
155
-
156
25
  exports[`ts#rdb generator > should add mysql prisma dependencies when engine is MySQL > packages/db/src/create-db-user-handler.ts 1`] = `
157
26
  "import type { CloudFormationCustomResourceEvent } from 'aws-lambda';
158
27
  import { randomBytes } from 'node:crypto';
@@ -230,8 +99,7 @@ export const handler = async (
230
99
  `;
231
100
 
232
101
  exports[`ts#rdb generator > should add mysql prisma dependencies when engine is MySQL > packages/db/src/index.ts 1`] = `
233
- "export { DB_PACKAGE_NAME } from './constants.js';
234
- export { getPrisma } from './prisma.js';
102
+ "export { getPrisma } from './prisma.js';
235
103
  "
236
104
  `;
237
105
 
@@ -270,26 +138,31 @@ exports[`ts#rdb generator > should add mysql prisma dependencies when engine is
270
138
  "import { PrismaMariaDb } from '@prisma/adapter-mariadb';
271
139
  import { Signer } from '@aws-sdk/rds-signer';
272
140
  import { Prisma, PrismaClient } from '../generated/prisma/client.js';
273
- import {
274
- DB_PACKAGE_NAME,
275
- LOCAL_DB_HOST,
276
- LOCAL_DB_NAME,
277
- LOCAL_DB_PASSWORD,
278
- LOCAL_DB_PORT,
279
- LOCAL_DB_USER,
280
- } from './constants.js';
141
+ import { readFileSync } from 'fs';
142
+ import { join, dirname } from 'path';
143
+ import { fileURLToPath } from 'url';
281
144
  import { getDatabaseConfig } from './utils.js';
282
145
 
146
+ // Generated: must match runtimeConfigKey in config.json
147
+ const runtimeConfigKey = 'Db';
148
+
149
+ const __dirname = dirname(fileURLToPath(import.meta.url));
150
+ // config.json is only present in local dev (not included in the deployed bundle); guard with SERVE_LOCAL check
151
+ const serveLocal = () =>
152
+ JSON.parse(readFileSync(join(__dirname, '../config.json'), 'utf-8'))
153
+ .serveLocal;
154
+
283
155
  export const getPrisma = async <LogOpts extends Prisma.LogLevel>(
284
156
  log: LogOpts[] = ['warn', 'error'] as LogOpts[],
285
157
  ): Promise<PrismaClient<LogOpts>> => {
286
158
  if (process.env.SERVE_LOCAL === 'true') {
159
+ const { host, port, dbName, dbUser, dbPassword } = serveLocal();
287
160
  const adapter = new PrismaMariaDb({
288
- host: LOCAL_DB_HOST,
289
- port: LOCAL_DB_PORT,
290
- database: LOCAL_DB_NAME,
291
- user: LOCAL_DB_USER,
292
- password: LOCAL_DB_PASSWORD,
161
+ host,
162
+ port,
163
+ database: dbName,
164
+ user: dbUser,
165
+ password: dbPassword,
293
166
  allowPublicKeyRetrieval: true,
294
167
  });
295
168
  return new PrismaClient({
@@ -299,7 +172,7 @@ export const getPrisma = async <LogOpts extends Prisma.LogLevel>(
299
172
  }
300
173
 
301
174
  const { hostname, port, database, dbUser, region } =
302
- await getDatabaseConfig(DB_PACKAGE_NAME);
175
+ await getDatabaseConfig(runtimeConfigKey);
303
176
  const iamAuthToken = await new Signer({
304
177
  hostname,
305
178
  port,
@@ -896,17 +769,14 @@ export abstract class AuroraDatabase extends Construct {
896
769
 
897
770
  exports[`ts#rdb generator > should add mysql prisma dependencies when engine is MySQL 2`] = `
898
771
  "import { defineConfig } from 'prisma/config';
772
+ import { readFileSync } from 'fs';
899
773
 
900
774
  const getDatabaseUrl = async () => {
901
775
  if (process.env.SERVE_LOCAL === 'true') {
902
- const {
903
- LOCAL_DB_HOST,
904
- LOCAL_DB_NAME,
905
- LOCAL_DB_PASSWORD,
906
- LOCAL_DB_PORT,
907
- LOCAL_DB_USER,
908
- } = await import('./src/constants.js');
909
- return \`mysql://\${LOCAL_DB_USER}:\${LOCAL_DB_PASSWORD}@\${LOCAL_DB_HOST}:\${LOCAL_DB_PORT}/\${LOCAL_DB_NAME}\`;
776
+ const { host, port, dbName, dbUser, dbPassword } = JSON.parse(
777
+ readFileSync('config.json', 'utf-8'),
778
+ ).serveLocal;
779
+ return \`mysql://\${dbUser}:\${dbPassword}@\${host}:\${port}/\${dbName}\`;
910
780
  }
911
781
  return process.env.DATABASE_URL;
912
782
  };
@@ -1822,10 +1692,12 @@ resource "random_string" "suffix" {
1822
1692
  }
1823
1693
 
1824
1694
  locals {
1825
- create_db_user_bundle_path = "\${path.module}/../../../../../../../dist/packages/db/bundle/create-db-user"
1826
- migration_function_name = "db-migration-\${random_string.suffix.result}"
1695
+ config = jsondecode(file("\${path.module}/../../../../../../../packages/db/config.json"))
1696
+ runtime_config_key = local.config.runtimeConfigKey
1697
+ create_db_user_bundle_path = "\${path.module}/../../../../../../../dist/packages/db/bundle/create-db-user"
1698
+ migration_function_name = "db-migration-\${random_string.suffix.result}"
1827
1699
  create_db_user_function_name = "db-create-db-user-\${random_string.suffix.result}"
1828
- database_runtime_user = "db_\${random_string.suffix.result}"
1700
+ database_runtime_user = "db_\${random_string.suffix.result}"
1829
1701
  }
1830
1702
 
1831
1703
  module "aurora" {
@@ -1891,7 +1763,7 @@ module "add_rdb_to_runtime_config" {
1891
1763
  source = "../../../core/runtime-config/entry"
1892
1764
 
1893
1765
  namespace = "database"
1894
- key = "Db"
1766
+ key = local.runtime_config_key
1895
1767
  value = {
1896
1768
  hostname = module.aurora.cluster_endpoint
1897
1769
  port = module.aurora.cluster_port
@@ -3281,10 +3153,12 @@ resource "random_string" "suffix" {
3281
3153
  }
3282
3154
 
3283
3155
  locals {
3284
- create_db_user_bundle_path = "\${path.module}/../../../../../../../dist/packages/db/bundle/create-db-user"
3285
- migration_function_name = "db-migration-\${random_string.suffix.result}"
3156
+ config = jsondecode(file("\${path.module}/../../../../../../../packages/db/config.json"))
3157
+ runtime_config_key = local.config.runtimeConfigKey
3158
+ create_db_user_bundle_path = "\${path.module}/../../../../../../../dist/packages/db/bundle/create-db-user"
3159
+ migration_function_name = "db-migration-\${random_string.suffix.result}"
3286
3160
  create_db_user_function_name = "db-create-db-user-\${random_string.suffix.result}"
3287
- database_runtime_user = "db_\${random_string.suffix.result}"
3161
+ database_runtime_user = "db_\${random_string.suffix.result}"
3288
3162
  }
3289
3163
 
3290
3164
  module "aurora" {
@@ -3350,7 +3224,7 @@ module "add_rdb_to_runtime_config" {
3350
3224
  source = "../../../core/runtime-config/entry"
3351
3225
 
3352
3226
  namespace = "database"
3353
- key = "Db"
3227
+ key = local.runtime_config_key
3354
3228
  value = {
3355
3229
  hostname = module.aurora.cluster_endpoint
3356
3230
  port = module.aurora.cluster_port
@@ -3864,139 +3738,6 @@ datasource db {
3864
3738
  "
3865
3739
  `;
3866
3740
 
3867
- exports[`ts#rdb generator > should generate the aurora shared construct > packages/db/scripts/pull-image.ts 1`] = `
3868
- "import { spawnSync } from 'child_process';
3869
-
3870
- const ENGINE = 'docker';
3871
- const image = process.argv[2];
3872
-
3873
- const inspect = spawnSync(ENGINE, ['image', 'inspect', image], {
3874
- stdio: 'ignore',
3875
- });
3876
-
3877
- if (inspect.status !== 0) {
3878
- const pull = spawnSync(ENGINE, ['pull', image], { stdio: 'inherit' });
3879
- if (pull.status !== 0) {
3880
- process.exit(pull.status ?? 1);
3881
- }
3882
- }
3883
- "
3884
- `;
3885
-
3886
- exports[`ts#rdb generator > should generate the aurora shared construct > packages/db/scripts/start-container.ts 1`] = `
3887
- "import { spawn, spawnSync } from 'child_process';
3888
-
3889
- const ENGINE = 'docker';
3890
-
3891
- const [containerName, image, hostPort, dbName, dbUser, dbPassword] =
3892
- process.argv.slice(2);
3893
-
3894
- const containerExists = (): boolean =>
3895
- spawnSync(ENGINE, ['container', 'inspect', containerName], {
3896
- stdio: 'ignore',
3897
- }).status === 0;
3898
-
3899
- const isRunning = (): boolean => {
3900
- const result = spawnSync(
3901
- ENGINE,
3902
- ['container', 'inspect', '-f', '{{.State.Running}}', containerName],
3903
- { encoding: 'utf-8' },
3904
- );
3905
- return result.status === 0 && result.stdout.trim() === 'true';
3906
- };
3907
-
3908
- if (containerExists()) {
3909
- if (!isRunning()) {
3910
- const start = spawnSync(ENGINE, ['start', containerName], {
3911
- stdio: 'inherit',
3912
- });
3913
- if (start.status !== 0) process.exit(start.status ?? 1);
3914
- }
3915
- } else {
3916
- const runArgs = (
3917
- \`run --rm --name \${containerName}\` +
3918
- \` -e POSTGRES_DB=\${dbName}\` +
3919
- \` -e POSTGRES_USER=\${dbUser}\` +
3920
- \` -e POSTGRES_PASSWORD=\${dbPassword}\` +
3921
- \` -e PGDATA=/var/lib/postgresql/17/docker\` +
3922
- \` -p \${hostPort}:5432\` +
3923
- \` -v \${containerName}-data:/var/lib/postgresql\` +
3924
- \` -d \${image}\`
3925
- ).split(' ');
3926
- const create = spawnSync(ENGINE, runArgs, { stdio: 'inherit' });
3927
- if (create.status !== 0) process.exit(create.status ?? 1);
3928
- }
3929
-
3930
- const logs = spawn(ENGINE, ['logs', '-f', containerName], {
3931
- stdio: ['ignore', 'inherit', 'inherit'],
3932
- });
3933
-
3934
- let exiting = false;
3935
-
3936
- const cleanup = () => {
3937
- if (exiting) return;
3938
- exiting = true;
3939
- spawnSync(ENGINE, ['stop', containerName], { stdio: 'ignore' });
3940
- logs.kill();
3941
- process.exit(0);
3942
- };
3943
-
3944
- process.on('SIGTERM', cleanup);
3945
- process.on('SIGINT', cleanup);
3946
- process.on('SIGHUP', cleanup);
3947
-
3948
- logs.on('exit', (code) => {
3949
- if (!exiting) process.exit(code ?? 0);
3950
- });
3951
- "
3952
- `;
3953
-
3954
- exports[`ts#rdb generator > should generate the aurora shared construct > packages/db/scripts/wait-for-db.ts 1`] = `
3955
- "import { Client } from 'pg';
3956
-
3957
- const noop = () => undefined;
3958
-
3959
- const [portArg, dbArg, userArg, passwordArg] = process.argv.slice(2);
3960
- const timeoutAt = Date.now() + 60000;
3961
-
3962
- while (Date.now() < timeoutAt) {
3963
- const client = new Client({
3964
- host: 'localhost',
3965
- port: parseInt(portArg),
3966
- user: userArg,
3967
- password: passwordArg,
3968
- database: dbArg,
3969
- connectionTimeoutMillis: 500,
3970
- });
3971
- client.on('error', noop);
3972
- try {
3973
- await client.connect();
3974
- await client.end();
3975
- console.log('Database is ready.');
3976
- process.exit(0);
3977
- } catch {
3978
- console.log('Database is not ready.');
3979
- await client.end().catch(noop);
3980
- }
3981
- await new Promise((r) => setTimeout(r, 200));
3982
- }
3983
-
3984
- throw new Error(\`Timed out waiting for postgres on port \${portArg}\`);
3985
- "
3986
- `;
3987
-
3988
- exports[`ts#rdb generator > should generate the aurora shared construct > packages/db/src/constants.ts 1`] = `
3989
- "export const DB_PACKAGE_NAME = 'Db';
3990
-
3991
- // Local development connection details (used when SERVE_LOCAL=true, see serve-local Nx target)
3992
- export const LOCAL_DB_PORT = 5432;
3993
- export const LOCAL_DB_HOST = 'localhost';
3994
- export const LOCAL_DB_NAME = 'database_name';
3995
- export const LOCAL_DB_USER = 'dbadmin';
3996
- export const LOCAL_DB_PASSWORD = 'password';
3997
- "
3998
- `;
3999
-
4000
3741
  exports[`ts#rdb generator > should generate the aurora shared construct > packages/db/src/create-db-user-handler.ts 1`] = `
4001
3742
  "import type { CloudFormationCustomResourceEvent } from 'aws-lambda';
4002
3743
  import { randomBytes } from 'node:crypto';
@@ -4088,8 +3829,7 @@ export const handler = async (
4088
3829
  `;
4089
3830
 
4090
3831
  exports[`ts#rdb generator > should generate the aurora shared construct > packages/db/src/index.ts 1`] = `
4091
- "export { DB_PACKAGE_NAME } from './constants.js';
4092
- export { getPrisma } from './prisma.js';
3832
+ "export { getPrisma } from './prisma.js';
4093
3833
  "
4094
3834
  `;
4095
3835
 
@@ -4141,16 +3881,20 @@ exports[`ts#rdb generator > should generate the aurora shared construct > packag
4141
3881
  import { Signer } from '@aws-sdk/rds-signer';
4142
3882
  import { Prisma, PrismaClient } from '../generated/prisma/client.js';
4143
3883
  import { Pool } from 'pg';
4144
- import {
4145
- DB_PACKAGE_NAME,
4146
- LOCAL_DB_HOST,
4147
- LOCAL_DB_NAME,
4148
- LOCAL_DB_PASSWORD,
4149
- LOCAL_DB_PORT,
4150
- LOCAL_DB_USER,
4151
- } from './constants.js';
3884
+ import { readFileSync } from 'fs';
3885
+ import { join, dirname } from 'path';
3886
+ import { fileURLToPath } from 'url';
4152
3887
  import { getDatabaseConfig } from './utils.js';
4153
3888
 
3889
+ // Generated: must match runtimeConfigKey in config.json
3890
+ const runtimeConfigKey = 'Db';
3891
+
3892
+ const __dirname = dirname(fileURLToPath(import.meta.url));
3893
+ // config.json is only present in local dev (not included in the deployed bundle); guard with SERVE_LOCAL check
3894
+ const serveLocal = () =>
3895
+ JSON.parse(readFileSync(join(__dirname, '../config.json'), 'utf-8'))
3896
+ .serveLocal;
3897
+
4154
3898
  let prismaClient: PrismaClient<Prisma.LogLevel> | undefined;
4155
3899
 
4156
3900
  export const getPrisma = async <LogOpts extends Prisma.LogLevel>(
@@ -4159,13 +3903,14 @@ export const getPrisma = async <LogOpts extends Prisma.LogLevel>(
4159
3903
  if (prismaClient) return prismaClient;
4160
3904
 
4161
3905
  if (process.env.SERVE_LOCAL === 'true') {
3906
+ const { host, port, dbName, dbUser, dbPassword } = serveLocal();
4162
3907
  const adapter = new PrismaPg(
4163
3908
  new Pool({
4164
- host: LOCAL_DB_HOST,
4165
- port: LOCAL_DB_PORT,
4166
- database: LOCAL_DB_NAME,
4167
- user: LOCAL_DB_USER,
4168
- password: LOCAL_DB_PASSWORD,
3909
+ host,
3910
+ port,
3911
+ database: dbName,
3912
+ user: dbUser,
3913
+ password: dbPassword,
4169
3914
  allowExitOnIdle: true,
4170
3915
  }),
4171
3916
  );
@@ -4177,7 +3922,7 @@ export const getPrisma = async <LogOpts extends Prisma.LogLevel>(
4177
3922
  }
4178
3923
 
4179
3924
  const { hostname, port, database, dbUser, region } =
4180
- await getDatabaseConfig(DB_PACKAGE_NAME);
3925
+ await getDatabaseConfig(runtimeConfigKey);
4181
3926
  const adapter = new PrismaPg(
4182
3927
  new Pool({
4183
3928
  host: hostname,
@@ -4780,8 +4525,8 @@ export abstract class AuroraDatabase extends Construct {
4780
4525
  exports[`ts#rdb generator > should generate the aurora shared construct 2`] = `
4781
4526
  "import * as path from 'path';
4782
4527
  import * as url from 'url';
4528
+ import { readFileSync } from 'fs';
4783
4529
  import { Construct } from 'constructs';
4784
- import { DB_PACKAGE_NAME } from ':proj/db';
4785
4530
  import {
4786
4531
  AuroraDatabase,
4787
4532
  AuroraDatabaseEngines,
@@ -4789,6 +4534,16 @@ import {
4789
4534
  } from '../../core/rdb/aurora.js';
4790
4535
  import { findWorkspaceRoot } from '../../core/workspace.js';
4791
4536
 
4537
+ const { runtimeConfigKey } = JSON.parse(
4538
+ readFileSync(
4539
+ path.join(
4540
+ findWorkspaceRoot(url.fileURLToPath(new URL(import.meta.url))),
4541
+ 'packages/db/config.json',
4542
+ ),
4543
+ 'utf-8',
4544
+ ),
4545
+ ) as { runtimeConfigKey: string };
4546
+
4792
4547
  export type DbProps = Omit<
4793
4548
  AuroraDatabaseProps,
4794
4549
  | 'databaseName'
@@ -4808,7 +4563,7 @@ export class Db extends AuroraDatabase {
4808
4563
  ...props,
4809
4564
  databaseName: 'database_name',
4810
4565
  adminUser: 'databaseUser',
4811
- runtimeConfigKey: DB_PACKAGE_NAME,
4566
+ runtimeConfigKey,
4812
4567
  migrationBundleDir: path.join(
4813
4568
  findWorkspaceRoot(url.fileURLToPath(new URL(import.meta.url))),
4814
4569
  'dist/packages/db/bundle/migration',
@@ -4826,17 +4581,14 @@ export class Db extends AuroraDatabase {
4826
4581
 
4827
4582
  exports[`ts#rdb generator > should generate the aurora shared construct 3`] = `
4828
4583
  "import { defineConfig } from 'prisma/config';
4584
+ import { readFileSync } from 'fs';
4829
4585
 
4830
4586
  const getDatabaseUrl = async () => {
4831
4587
  if (process.env.SERVE_LOCAL === 'true') {
4832
- const {
4833
- LOCAL_DB_HOST,
4834
- LOCAL_DB_NAME,
4835
- LOCAL_DB_PASSWORD,
4836
- LOCAL_DB_PORT,
4837
- LOCAL_DB_USER,
4838
- } = await import('./src/constants.js');
4839
- return \`postgresql://\${LOCAL_DB_USER}:\${LOCAL_DB_PASSWORD}@\${LOCAL_DB_HOST}:\${LOCAL_DB_PORT}/\${LOCAL_DB_NAME}\`;
4588
+ const { host, port, dbName, dbUser, dbPassword } = JSON.parse(
4589
+ readFileSync('config.json', 'utf-8'),
4590
+ ).serveLocal;
4591
+ return \`postgresql://\${dbUser}:\${dbPassword}@\${host}:\${port}/\${dbName}\`;
4840
4592
  }
4841
4593
  return process.env.DATABASE_URL;
4842
4594
  };
@@ -0,0 +1,14 @@
1
+ {
2
+ "runtimeConfigKey": "<%= runtimeConfigKey %>",
3
+ "serveLocal": {
4
+ "containerEngine": "<%= containerEngine %>",
5
+ "containerName": "<%= containerName %>",
6
+ "image": "<%= dockerImage %>",
7
+ "port": <%= localDbPort %>,
8
+ "host": "<%= localDbHost %>",
9
+ "dbName": "<%= localDbName %>",
10
+ "dbUser": "<%= localDbUser %>",
11
+ "dbPassword": "<%= localDbPassword %>",
12
+ "dbEngine": "<%= engine %>"
13
+ }
14
+ }
@@ -1,13 +1,14 @@
1
1
  import { defineConfig } from 'prisma/config';
2
+ import { readFileSync } from 'fs';
2
3
 
3
4
  const getDatabaseUrl = async () => {
4
5
  if (process.env.SERVE_LOCAL === 'true') {
5
- const { LOCAL_DB_HOST, LOCAL_DB_NAME, LOCAL_DB_PASSWORD, LOCAL_DB_PORT, LOCAL_DB_USER } =
6
- await import('./src/constants.js');
6
+ const { host, port, dbName, dbUser, dbPassword } =
7
+ JSON.parse(readFileSync('config.json', 'utf-8')).serveLocal;
7
8
  <%_ if (engine === 'mysql') { _%>
8
- return `mysql://${LOCAL_DB_USER}:${LOCAL_DB_PASSWORD}@${LOCAL_DB_HOST}:${LOCAL_DB_PORT}/${LOCAL_DB_NAME}`;
9
+ return `mysql://${dbUser}:${dbPassword}@${host}:${port}/${dbName}`;
9
10
  <%_ } else { _%>
10
- return `postgresql://${LOCAL_DB_USER}:${LOCAL_DB_PASSWORD}@${LOCAL_DB_HOST}:${LOCAL_DB_PORT}/${LOCAL_DB_NAME}`;
11
+ return `postgresql://${dbUser}:${dbPassword}@${host}:${port}/${dbName}`;
11
12
  <%_ } _%>
12
13
  }
13
14
  return process.env.DATABASE_URL;
@@ -1,2 +1 @@
1
- export { DB_PACKAGE_NAME } from './constants.js';
2
1
  export { getPrisma } from './prisma.js';