Skip to content

Commit f782719

Browse files
committed
support prisma 5
1 parent c96b10b commit f782719

5 files changed

Lines changed: 113 additions & 85 deletions

File tree

__tests__/project.test.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,13 @@ describe('Project', () => {
1010
test('generate no project block', async () => {
1111
const { generators } = await generateConfig(datamodelUnnamedProject);
1212
const projectOptions = await getProjectOptions(generators[0].config);
13-
const project = generateProject(projectOptions);
14-
15-
expect(project.length).toEqual(0);
13+
expect(projectOptions).toBeUndefined();
1614
});
1715

1816
test('generate a project block with note', async () => {
1917
const { generators } = await generateConfig(datamodelProjectWithNote);
2018
const projectOptions = await getProjectOptions(generators[0].config);
21-
const project = generateProject(projectOptions);
19+
const project = generateProject(projectOptions!);
2220

2321
const expected =
2422
'Project "Test Project" {\n' +
@@ -33,7 +31,7 @@ describe('Project', () => {
3331
test('generate a project block with noteMd', async () => {
3432
const { generators } = await generateConfig(datamodelProjectWithNoteMd);
3533
const projectOptions = await getProjectOptions(generators[0].config);
36-
const project = generateProject(projectOptions);
34+
const project = generateProject(projectOptions!);
3735

3836
const expected =
3937
'Project "Test Project" {\n' +

package-lock.json

Lines changed: 76 additions & 58 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,16 +43,16 @@
4343
"url": "https://github.com/notiz-dev/prisma-dbml-generator/issues"
4444
},
4545
"dependencies": {
46-
"@prisma/generator-helper": "4.16.1",
47-
"@prisma/internals": "4.16.1"
46+
"@prisma/generator-helper": "5.0.0",
47+
"@prisma/internals": "5.0.0"
4848
},
4949
"devDependencies": {
50-
"@prisma/client": "4.16.1",
50+
"@prisma/client": "5.0.0",
5151
"@types/jest": "^29.2.4",
5252
"@types/node": "18.11.0",
5353
"jest": "29.7.0",
5454
"prettier": "3.2.5",
55-
"prisma": "4.16.1",
55+
"prisma": "5.0.0",
5656
"ts-jest": "29.1.2",
5757
"ts-toolbelt": "^9.6.0",
5858
"typescript": "5.3.3"

src/cli/dbml-generator.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ export const defaultDBMLFileName = 'schema.dbml';
1212
export async function generate(options: GeneratorOptions) {
1313
const { output, config } = options.generator;
1414
const outputDir = parseEnvValue(output!);
15-
const dbmlFileName = config.outputName || defaultDBMLFileName;
15+
16+
const dbmlFileName =
17+
typeof config.outputName === 'string'
18+
? config.outputName
19+
: defaultDBMLFileName;
1620
const allowManyToMany = config.manyToMany === 'false' ? false : true;
1721
const mapToDbSchema = config.mapToDbSchema === 'false' ? false : true;
1822
const includeRelationFields =

src/generator/project.ts

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,24 +37,32 @@ export async function getProjectOptions({
3737
projectDatabaseType,
3838
projectNote,
3939
projectNotePath,
40-
}: GeneratorConfig['config']): Promise<ProjectOptions> {
41-
let projectNoteMd = '';
40+
}: GeneratorConfig['config']): Promise<ProjectOptions | undefined> {
41+
if (typeof projectName === 'string') {
42+
let projectNoteMd = '';
4243

43-
if (projectNotePath) {
44-
const fullPath = `${process.cwd()}/${projectNotePath}`;
45-
try {
46-
projectNoteMd = await readFile(fullPath, 'utf-8');
47-
} catch (e) {
48-
console.log(
49-
`❌ Error: project note markdown file not found: ${fullPath}`,
50-
);
44+
if (projectNotePath) {
45+
const fullPath = `${process.cwd()}/${projectNotePath}`;
46+
try {
47+
projectNoteMd = await readFile(fullPath, 'utf-8');
48+
} catch (e) {
49+
console.log(
50+
`❌ Error: project note markdown file not found: ${fullPath}`,
51+
);
52+
}
5153
}
52-
}
5354

54-
return {
55-
name: projectName && `"${projectName}"`,
56-
databaseType: projectDatabaseType || '',
57-
note: projectNoteMd || projectNote || '', // noteMd takes precedence
58-
isMd: projectNoteMd !== '',
59-
};
55+
return {
56+
name: projectName && `"${projectName}"`,
57+
databaseType:
58+
typeof projectDatabaseType === 'string' ? projectDatabaseType : '',
59+
note: projectNoteMd
60+
? projectNoteMd
61+
: typeof projectNote === 'string'
62+
? projectNote
63+
: '', // noteMd takes precedence
64+
isMd: projectNoteMd !== '',
65+
};
66+
}
67+
return undefined;
6068
}

0 commit comments

Comments
 (0)