@gadmin2n/prisma-react-generator 0.0.41 → 0.0.43

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.
@@ -4,6 +4,7 @@ interface RunParam {
4
4
  output: string;
5
5
  dmmf: DMMF.Document;
6
6
  fileNamingStyle: NamingStyle;
7
+ existingPageModels?: Set<string>;
7
8
  }
8
9
  export declare const run: ({ output, dmmf, ...options }: RunParam) => WriteableFileSpecs[];
9
10
  export {};
@@ -21,7 +21,7 @@ const generate_ui_config_1 = require("./generate-ui-config");
21
21
  const generate_models_index_1 = require("./generate-models-index");
22
22
  const IGNORE_REACT_CODE = /@IgnoreReactCode/;
23
23
  const run = ({ output, dmmf, ...options }) => {
24
- const { fileNamingStyle = 'camel', ...preAndSuffixes } = options;
24
+ const { fileNamingStyle = 'camel', existingPageModels, ...preAndSuffixes } = options;
25
25
  const transformers = {
26
26
  camel: case_1.camel,
27
27
  kebab: case_1.kebab,
@@ -52,8 +52,9 @@ const run = ({ output, dmmf, ...options }) => {
52
52
  const uiConfig = (0, generate_ui_config_1.addNewModelsConfig)(allModels, enums);
53
53
  const modelUIFiles = allModels.map((model) => {
54
54
  sdk_1.logger.info(`Processing Model ${model.name}`);
55
+ const modelDirName = transformFileNameCase(model.name);
55
56
  const configFile = {
56
- fileName: node_path_1.default.join(output, 'props', transformFileNameCase(model.name), `config.ts`),
57
+ fileName: node_path_1.default.join(output, 'props', modelDirName, `config.ts`),
57
58
  content: (0, generate_config_props_1.generateConfigProps)({
58
59
  model,
59
60
  templateHelpers,
@@ -62,7 +63,7 @@ const run = ({ output, dmmf, ...options }) => {
62
63
  }),
63
64
  };
64
65
  const modelFile = {
65
- fileName: node_path_1.default.join(output, 'props', transformFileNameCase(model.name), `model.ts`),
66
+ fileName: node_path_1.default.join(output, 'props', modelDirName, `model.ts`),
66
67
  content: (0, generate_model_props_1.generateModelProps)({
67
68
  dmmf,
68
69
  model,
@@ -71,8 +72,12 @@ const run = ({ output, dmmf, ...options }) => {
71
72
  allModels,
72
73
  }),
73
74
  };
75
+ if (existingPageModels === null || existingPageModels === void 0 ? void 0 : existingPageModels.has(modelDirName)) {
76
+ sdk_1.logger.info(`Skipping page generation for Model ${model.name} (already exists in pagesDir)`);
77
+ return [configFile, modelFile];
78
+ }
74
79
  const createPageFile = {
75
- fileName: node_path_1.default.join(output, 'pages', transformFileNameCase(model.name), `create.tsx`),
80
+ fileName: node_path_1.default.join(output, 'pages', modelDirName, `create.tsx`),
76
81
  content: (0, generate_create_page_1.generateCreatePage)({
77
82
  model,
78
83
  templateHelpers,
@@ -81,7 +86,7 @@ const run = ({ output, dmmf, ...options }) => {
81
86
  }),
82
87
  };
83
88
  const editPageFile = {
84
- fileName: node_path_1.default.join(output, 'pages', transformFileNameCase(model.name), `edit.tsx`),
89
+ fileName: node_path_1.default.join(output, 'pages', modelDirName, `edit.tsx`),
85
90
  content: (0, generate_edit_page_1.generateEditPage)({
86
91
  model,
87
92
  templateHelpers,
@@ -90,7 +95,7 @@ const run = ({ output, dmmf, ...options }) => {
90
95
  }),
91
96
  };
92
97
  const indexPageFile = {
93
- fileName: node_path_1.default.join(output, 'pages', transformFileNameCase(model.name), `index.tsx`),
98
+ fileName: node_path_1.default.join(output, 'pages', modelDirName, `index.tsx`),
94
99
  content: (0, generate_index_page_1.generateIndexPage)({
95
100
  model,
96
101
  templateHelpers,
@@ -99,7 +104,7 @@ const run = ({ output, dmmf, ...options }) => {
99
104
  }),
100
105
  };
101
106
  const listPageFile = {
102
- fileName: node_path_1.default.join(output, 'pages', transformFileNameCase(model.name), `list.tsx`),
107
+ fileName: node_path_1.default.join(output, 'pages', modelDirName, `list.tsx`),
103
108
  content: (0, generate_list_page_1.generateListPage)({
104
109
  model,
105
110
  templateHelpers,
@@ -108,7 +113,7 @@ const run = ({ output, dmmf, ...options }) => {
108
113
  }),
109
114
  };
110
115
  const showPageFile = {
111
- fileName: node_path_1.default.join(output, 'pages', transformFileNameCase(model.name), `show.tsx`),
116
+ fileName: node_path_1.default.join(output, 'pages', modelDirName, `show.tsx`),
112
117
  content: (0, generate_show_page_1.generatePageShow)({
113
118
  model,
114
119
  templateHelpers,
package/dist/index.js CHANGED
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.generate = exports.stringToBoolean = void 0;
7
7
  const promises_1 = __importDefault(require("node:fs/promises"));
8
+ const node_fs_1 = require("node:fs");
8
9
  const node_path_1 = __importDefault(require("node:path"));
9
10
  const make_dir_1 = __importDefault(require("make-dir"));
10
11
  const generator_helper_1 = require("@prisma/generator-helper");
@@ -22,7 +23,7 @@ const stringToBoolean = (input, defaultValue = false) => {
22
23
  exports.stringToBoolean = stringToBoolean;
23
24
  const generate = (options) => {
24
25
  const output = (0, sdk_1.parseEnvValue)(options.generator.output);
25
- const { fileNamingStyle = 'camel', } = options.generator.config;
26
+ const { fileNamingStyle = 'camel', pagesDir, } = options.generator.config;
26
27
  const supportedFileNamingStyles = ['kebab', 'camel', 'pascal', 'snake'];
27
28
  const isSupportedFileNamingStyle = (style) => supportedFileNamingStyles.includes(style);
28
29
  if (!isSupportedFileNamingStyle(fileNamingStyle)) {
@@ -30,10 +31,20 @@ const generate = (options) => {
30
31
  .map((s) => `'${s}'`)
31
32
  .join(', ')}.`);
32
33
  }
34
+ const existingPageModels = new Set();
35
+ if (pagesDir) {
36
+ const resolvedPagesDir = node_path_1.default.resolve(node_path_1.default.dirname(options.schemaPath), pagesDir);
37
+ if ((0, node_fs_1.existsSync)(resolvedPagesDir)) {
38
+ (0, node_fs_1.readdirSync)(resolvedPagesDir, { withFileTypes: true })
39
+ .filter((e) => e.isDirectory())
40
+ .forEach((e) => existingPageModels.add(e.name));
41
+ }
42
+ }
33
43
  const results = (0, generator_1.run)({
34
44
  output,
35
45
  dmmf: options.dmmf,
36
46
  fileNamingStyle,
47
+ existingPageModels,
37
48
  });
38
49
  const indexCollections = {};
39
50
  return Promise.all(results
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gadmin2n/prisma-react-generator",
3
3
  "description": "Generates react props and components from Prisma Schema for Tea/Antd ui lib.",
4
- "version": "0.0.41",
4
+ "version": "0.0.43",
5
5
  "license": "Apache-2.0",
6
6
  "author": {
7
7
  "name": "kavenma",