@postxl/generator 0.0.20 → 0.0.22

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 (31) hide show
  1. package/README.md +2 -2
  2. package/dist/jest.config.js +17 -0
  3. package/dist/src/generator.js +13 -13
  4. package/dist/src/generators/enums/react.generator.js +55 -55
  5. package/dist/src/generators/enums/types.generator.js +8 -8
  6. package/dist/src/generators/indices/datamockmodule.generator.js +46 -46
  7. package/dist/src/generators/indices/datamodule.generator.js +76 -76
  8. package/dist/src/generators/indices/dataservice.generator.js +26 -26
  9. package/dist/src/generators/indices/repositories.generator.js +3 -3
  10. package/dist/src/generators/indices/testdataservice.generator.js +23 -22
  11. package/dist/src/generators/models/react.generator/context.generator.js +47 -47
  12. package/dist/src/generators/models/react.generator/index.js +8 -8
  13. package/dist/src/generators/models/react.generator/library.generator.js +66 -66
  14. package/dist/src/generators/models/react.generator/lookup.generator.js +75 -75
  15. package/dist/src/generators/models/react.generator/modals.generator.js +261 -261
  16. package/dist/src/generators/models/repository.generator.js +239 -239
  17. package/dist/src/generators/models/route.generator.js +45 -45
  18. package/dist/src/generators/models/seed.generator.js +14 -14
  19. package/dist/src/generators/models/stub.generator.js +19 -19
  20. package/dist/src/generators/models/types.generator.js +39 -39
  21. package/dist/src/lib/vfs.js +2 -2
  22. package/dist/tsconfig.tsbuildinfo +1 -1
  23. package/package.json +8 -2
  24. package/changelog.md +0 -115
  25. package/jest.config.ts +0 -18
  26. package/tests/attributes.test.ts +0 -91
  27. package/tests/file.test.ts +0 -32
  28. package/tests/schemas/la/la.prisma +0 -862
  29. package/tests/schemas/mca/mca.prisma +0 -528
  30. package/tests/utils/random.ts +0 -11
  31. package/tests/vfs.test.ts +0 -92
@@ -1,862 +0,0 @@
1
- datasource db {
2
- provider = "postgres"
3
- url = env("DATABASE_CONNECTION")
4
- schemas = ["Benchmark", "Cache", "Configuration", "Participation", "User"]
5
- }
6
-
7
- generator client {
8
- provider = "prisma-client-js"
9
- previewFeatures = ["multiSchema"]
10
- }
11
-
12
- generator pxl {
13
- provider = "node ./dist/src/generator.js"
14
-
15
- project = "la"
16
-
17
- pathToTypes = "./tests/schemas/la/generated/backend/libs/types/src/"
18
- pathToDataLib = "./tests/schemas/la/generated/backend/libs/data/src/"
19
- trpcRoutesFolder = "./tests/schemas/la/generated/backend/libs/trpc/src/routes/"
20
- pathToSeedLib = "./tests/schemas/la/generated/backend/libs/seed/src/"
21
-
22
- reactFolderOutput = "./tests/schemas/la/generated/web/src/components/"
23
-
24
- randomSeed = 1
25
- force = false
26
- }
27
-
28
- /// @@Ignore("Used by Db Service, shall not be exposed!")
29
- model Config {
30
- id Boolean @id @default(true)
31
- isTest Boolean @default(false)
32
-
33
- @@schema("Configuration")
34
- }
35
-
36
- model Country {
37
- id Int @id() @default(autoincrement())
38
- ///@@Examples(["United States", "Canada", "Germany"])
39
- name String
40
-
41
- ///@@Description("Country code based on ISO 3166-1 alpha-2")
42
- ///@@Examples(["US", "CA", "DE"])
43
- code String
44
-
45
- participants Participant[] @relation("Participant_FK_CountryId_Country_Country")
46
-
47
- @@schema("Configuration")
48
- }
49
-
50
- ///@@Description("A Benchmark is a collection of Surveys to the same topic (e.g. `Life & Annuities`, `Workforce Benefits`) across years and coutnries.")
51
- model Benchmark {
52
- id Int @id() @default(autoincrement())
53
- ///@@Examples(["Life & Annuities", "Workforce Benefits"])
54
- name String
55
- surveys Survey[]
56
-
57
- @@schema("Configuration")
58
- }
59
-
60
- model Survey {
61
- id Int @id() @default(autoincrement())
62
-
63
- benchmarkId Int
64
- benchmark Benchmark @relation(fields: [benchmarkId], references: [id], onUpdate: NoAction, map: "Survey_FK_Benchmark_Id")
65
-
66
- ///@@Examples(["Life & Annuities US 2021", "Workforce Benefits Canada 2022"])
67
- name String
68
-
69
- ///@@Examples([2021, 2022])
70
- year Int
71
-
72
- participants Participant[] @relation("Participant_FK_SurveyId_Survey_Id")
73
-
74
- productGroups ProductGroup[] @relation("ProductGroup_FK_SurveyId_Survey_Id")
75
-
76
- taxonomyGroups TaxonomyGroup[] @relation("TaxonomyGroup_FK_SurveyId_Survey_Id")
77
- // ProductGroupResult ProductGroupResult[]
78
- // ProductSplit ProductSplit[]
79
- // ProductSplitGroup ProductSplitGroup[]
80
- // Question Question[]
81
- // SurveyQuestion SurveyQuestion[]
82
-
83
- dimensions Dimension[] @relation("Dimension_FK_SurveyId_Survey_Id")
84
-
85
- @@schema("Configuration")
86
- }
87
-
88
- model Company {
89
- id Int @id() @default(autoincrement())
90
-
91
- ///@@Examples(["Allianz", "NationWide", "Liberty Mutual"])
92
- name String
93
-
94
- participants Participant[] @relation("Participant_FK_CompanyId_Company_Id")
95
-
96
- @@schema("Participation")
97
- }
98
-
99
- ///@@Description("A participant is a company (or a product-group thereof), that takes part in a survey.")
100
- model Participant {
101
- id Int @id() @default(autoincrement())
102
-
103
- ///@@Examples(["Allianz Life US 2021", "NationWide Workforce Canada 2022"])
104
- name String
105
-
106
- countryId Int
107
- country Country @relation("Participant_FK_CountryId_Country_Country", fields: [countryId], references: [id], onUpdate: NoAction)
108
-
109
- surveyId Int
110
- survey Survey @relation("Participant_FK_SurveyId_Survey_Id", fields: [surveyId], references: [id], onUpdate: NoAction)
111
-
112
- companyId Int
113
- company Company @relation("Participant_FK_CompanyId_Company_Id", fields: [companyId], references: [id], onUpdate: NoAction)
114
-
115
- ///@@Description("The participant can be linked to a product group (e.g. Life, Annuities, Other) of a survey.")
116
- productGroupId Int?
117
- productGroup ProductGroup? @relation("Participant_FK_ProductGroupId_ProductGroup_Id", fields: [productGroupId], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "Participant_FK_ProductGroup_ProductGroupId")
118
-
119
- participationStatus ParticipationStatus
120
-
121
- ///@@Description("The peer groups defined for this participant.")
122
- peerGroups PeerGroup[]
123
-
124
- ///@@Description("The peer groups that this participant is part of, i.e. where its metrics are included in the group statistics.")
125
- peerGroupParticipant PeerGroupParticipant[] @relation("PeerGroupParticipant_FK_ParticipantId_Participant_Id")
126
-
127
- ///@@Description("Explicit peers are other participants whose metrics are shown non-disguised/without aggregation. This should only be used for participants of the same company/group.")
128
- explicitPeers ExplicitPeerGroup[] @relation("ExplicitPeerGroup_FK_ParticipantId_Participant_Id")
129
- ///@@Description("The explicit peer groups that this participant is part of, i.e. where its metrics areexplicitly/non-disguised available to other participants.")
130
- explicitPeerToOtherParticipants ExplicitPeerGroup[] @relation("ExplicitPeerGroup_FK_PeerId_Participant_Id")
131
-
132
- // latestDataImportId Int?
133
- // dataImport_DataImport_ParticipantIdToParticipant DataImport[] @relation("DataImport_ParticipantIdToParticipant")
134
- // metricOutlier MetricOutlier[]
135
- // dataImport_Participant_LatestDataImportIdToDataImport DataImport? @relation("Participant_LatestDataImportIdToDataImport", fields: [latestDataImportId], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "Participant_FK_DataImport_LatestDataImportId")
136
- // participantChartSetting ParticipantChartSetting[]
137
-
138
- @@schema("Participation")
139
- }
140
-
141
- enum ParticipationStatus {
142
- Contacted
143
- ParticipationConfirmed
144
- ParticipationDeclined
145
- SurveyPopulated
146
- SurveyResent
147
- SurveyCompleted
148
- AnalysesCompleted
149
-
150
- @@schema("Participation")
151
- }
152
-
153
- ///@@Description("Larger benchmarks/survey (e.g. L&A) can have multiple product groups (e.g. Life, Annuities, Other). Smaller benchmarks/surveys (e.g. Workforce Benefits) have only one product group. A prodcut group is linked a a taxonomy.")
154
- model ProductGroup {
155
- id Int @id() @default(autoincrement())
156
-
157
- ///@@Description("The survey this product group belongs to.")
158
- surveyId Int
159
- survey Survey @relation("ProductGroup_FK_SurveyId_Survey_Id", fields: [surveyId], references: [id], onUpdate: NoAction)
160
-
161
- ///@@Examples("Life", "Annuities", "Accident & Health")
162
- name String
163
-
164
- ///@@Description("Short name for the product group, for use in dense charts/tables.")
165
- ///@@Examples("Life", "Ann.", "A&H")
166
- shortName String
167
-
168
- ///@@Description("Participants belonging to this product group.")
169
- participants Participant[] @relation("Participant_FK_ProductGroupId_ProductGroup_Id")
170
- // productGroupResult ProductGroupResult[]
171
-
172
- @@schema("Configuration")
173
- }
174
-
175
- ///@@Description("A peer group is a group of participants that are compared to each other.")
176
- model PeerGroup {
177
- id Int @id() @default(autoincrement())
178
-
179
- ///@@Description("The participant that this peer group belongs to.")
180
- participantId Int
181
- participant Participant @relation(fields: [participantId], references: [id], onUpdate: NoAction, map: "PeerGroup_FK_Participant_Id")
182
-
183
- ///@@Examples("Allianz Life Peers 2021", "Nationwide High-performering Peers 2022")
184
- name String
185
-
186
- ///@@Description("In case a participant has multiple peer groups, this provide the priority order of the peer groups for any result presentations.")
187
- order Int?
188
-
189
- ///@@Description("The participants that are part of this peer group.")
190
- peerGroupParticipants PeerGroupParticipant[] @relation("PeerGroupParticipant_FK_PeerGroupId_PeerGroup_Id")
191
-
192
- // peerGroupResult PeerGroupResult[]
193
-
194
- @@schema("Participation")
195
- }
196
-
197
- ///@@Description("Linking participants to peer groups.")
198
- model PeerGroupParticipant {
199
- id Int @id() @default(autoincrement())
200
-
201
- name String
202
-
203
- peerGroupId Int
204
- peerGroup PeerGroup @relation("PeerGroupParticipant_FK_PeerGroupId_PeerGroup_Id", fields: [peerGroupId], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "PeerGroupParticipant_FK_PeerGroup_Id")
205
- participantId Int
206
- participant Participant @relation("PeerGroupParticipant_FK_ParticipantId_Participant_Id", fields: [participantId], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "PeerGroupParticipant_FK_Participant_Id")
207
-
208
- @@schema("Participation")
209
- }
210
-
211
- model ExplicitPeerGroup {
212
- id Int @id() @default(autoincrement())
213
-
214
- ///@@Examples("Allianz previous years", "Allianz Life vs Annuities")
215
- name String
216
-
217
- ///@@Description("The participant that this peer group belongs to.")
218
- participantId Int
219
- participant Participant @relation("ExplicitPeerGroup_FK_ParticipantId_Participant_Id", fields: [participantId], references: [id], onUpdate: NoAction)
220
-
221
- ///@@Description("The participant that is part of this explicit peer group.")
222
- peerId Int
223
- peer Participant @relation("ExplicitPeerGroup_FK_PeerId_Participant_Id", fields: [peerId], references: [id])
224
-
225
- @@schema("Participation")
226
- }
227
-
228
- ///@@Description("A dimension is a root taxonomy that is assigned to a survey.\n See `Taxonomy` for more information.")
229
- model Dimension {
230
- id Int @id() @default(autoincrement())
231
-
232
- ///@@Description("The survey this dimension belongs to.")
233
- surveyId Int
234
- survey Survey @relation("Dimension_FK_SurveyId_Survey_Id", fields: [surveyId], references: [id], onUpdate: NoAction)
235
-
236
- ///@@Description("The name of the dimension.")
237
- name String
238
-
239
- ///@@Description("The root taxonomy of the dimension, e.g. `Product` for the `Product` dimension.")
240
- rootTaxonomyId Int
241
- rootTaxonomy Taxonomy @relation("Dimension_FK_RootTaxonomyId_Taxonomy_Id", fields: [rootTaxonomyId], references: [id], onUpdate: NoAction)
242
-
243
- // TaxonomyGroup TaxonomyGroup[]
244
-
245
- @@schema("Configuration")
246
- }
247
-
248
- ///@@Description("Taxonomy is a hierarchical structure that represents different dimensions that can be assigned to a value.\nFor instance, a value collected might be\n`Number of external FTEs in call centers that are working on Life Term products`.\nThis example value has three dimensions:\n 1. Indicator (FTEs (F) -> External (FE) )\n 2. Company Function (Operations (O) -> Call Center (OC))\n 3. Product: (Life (L) -> Term Life (LT))\nThe three dimensions are stored as `Dimension` - and each dimension as a root `Taxonomy`, e.g.\n `Product` dimension has `Product` (`P`) taxonomy.\nAs taxonomy is hierarchical, `Product` has multiple child-taxonomies:\n - `Life` (`L`)\n - `Term Life` (`T` -> `LT`)\n - `Whole` (`W` -> `LW`)\n - `Annuities` (`A`)\n\nEach taxonomy has a `levelKey` property - a single letter that must be unique within its siblings.\nConcatenated with the parent taxonomy's `key`, this results in a `key` that is unique\n(within the scope a of a survey), e.g. `PLT` is `Product` -> `Life` -> `Term`\n\nTaxonomies are used to \"taxate/categorize\" the survey questions/collected data points\nand to specify aggregations for metrics. (e.g. `Sum of Indicator FTE across Function Operations`)")
249
- model Taxonomy {
250
- id Int @id() @default(autoincrement())
251
-
252
- ///@@Description("The parent taxonomy of this taxonomy.\nCan be blank for root taxonomies.")
253
- parentId Int?
254
- parent Taxonomy? @relation("Taxonomy_ParentIdToTaxonomy", fields: [parentId], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "Taxonomy_FK_Taxonomy_ParentId")
255
- children Taxonomy[] @relation("Taxonomy_ParentIdToTaxonomy")
256
-
257
- ///@@Description("The single character key of the taxonomy item")
258
- ///@@Examples("P", "L", "T", "F", "S")
259
- levelKey String @db.Char(1)
260
-
261
- ///@@Description("The combined key of `parent.key` + `levelKey`")
262
- ///@@Examples("P", "PL", "PLT", "F", "FS")
263
- key String
264
-
265
- ///@@Description("The order of the taxonomy within its siblings.")
266
- levelOrder Int?
267
- ///@@Description("Field stored in DB for ease of processing - to be checked if really needed")
268
- level Int?
269
-
270
- ///@@Description("The name of the taxonomy.")
271
- ///@@Examples("Product", "Life", "Term Life", "Function", "Sales")
272
- name String
273
-
274
- ///@@Description("A taxonomy can have multiple synonyms. This can include slightly different spellings, abbreviations used.\nThis is mainly used to map the questions in the survey templates.")
275
- ///@@Examples("", "", "Term Life", "", "Sales & Agents")
276
- synonyms String[]
277
- ///@@Description("Should contain client-ready documentation for this taxonomy.")
278
- description String?
279
-
280
- ///@@Description("For team internal comments/notes")
281
- ///@@Examples("Root level", "", "Should we rename this?", "Can this function be removed?", "Split introduced so we can separate between closed book and other.")
282
- notes String?
283
-
284
- ///@@Description("To discriminate between different types of taxonomies.\nDepending on the type, different properties are relevant.")
285
- type TaxonomyType
286
-
287
- ///@@Description("Used in the survey mapper: indicates that the rows that collect this taxonomy are further split by channels.")
288
- ///@@Ignore("Probably only used in the survey mapper")
289
- indicatorHasChannelBreakDown Boolean?
290
-
291
- ///@@Description("Relevant for export in data splitter tool: if set to TRUE, the data will be split based on the product group split,\nelse will be used without modification. E.g. costs will be split by product group, while average time to answer calls will not be split.")
292
- indicatorSplitByProduct Boolean?
293
-
294
- ///@@Description("Relevant for export in data splitter tool: if `indicatorSplitByProduct` is set to TRUE, this property indicates which product group this indicator belongs to. If set, the indicator will be exported if the product group to be exported matches - else it will be left blank.\n If it is not set, the normal product split logic will apply.\n\nNote: `X` is used as placeholder for all products and is equivalent to NULL.")
295
- ///@@Examples("L", "A", "H", "X", null)
296
- indicatorExportProductOnly String?
297
-
298
- ///@@Description("Defines the unit of the indicator.")
299
- ///@@Examples("$", "%", "#", "a", "s")
300
- indicatorUnit String?
301
-
302
- ///@@Description("Indicates if the indicator is a ratio (e.g. 50%) or a number (e.g. 5,000).\n**Note:** If it is a ratio, it cannot be aggregated by summing up the values!")
303
- indicatorIsRatio Boolean?
304
-
305
- ///@@Description("TBD")
306
- indicatorOnlyIndicatorAggregation Boolean?
307
-
308
- ///@@Description("The factor by which any value should be adjusted before being aggregated.\nCurrently only used for indicator `Annualized New Business Premium: Single Premium (KPAS)`, where the value provided by the participant covers 10years, so the value is factored with 0.1 before being aggregated. ")
309
- indicatorAdjustmentFactor Float? @default(1.0)
310
-
311
- ///@@Description("TBD")
312
- ///@@Ignore("Usage unclear")
313
- functionIsSummation Boolean @default(false)
314
-
315
- ///@@Description("The survey is split into worksheets and sections that broadly correspond to functions.\nThis property reflects this mapping and can be used for reference.")
316
- ///@@Examples("", "", "", "", "3.3.4")
317
- functionSection String?
318
-
319
- ///@@Description("The dimensions that this taxonomy is the root of.")
320
- rootTaxonomyToDimensions Dimension[] @relation("Dimension_FK_RootTaxonomyId_Taxonomy_Id")
321
-
322
- ///@@Description("The taxonomy groups that this taxonomy belongs to.")
323
- taxonomyGroupTaxonomies TaxonomyGroupTaxonomy[] @relation("TaxonomyGroupTaxonomy_FK_TaxonomyId_Taxonomy_Id")
324
-
325
- ///@@Description("All aggregations where this taxonomy is use as the indicator taxonomy.")
326
- indicatorAggregations Aggregation[] @relation("Aggregation_FK_IndicatorTaxonomyId_Taxonomy_Indicator")
327
- filterAggregations Aggregation[] @relation("Aggregation_Taxonomy_Filter")
328
-
329
- // productSplit_ProductSplit_TaxonomyId_FunctionToTaxonomy ProductSplit[] @relation("ProductSplit_TaxonomyId_FunctionToTaxonomy")
330
- // productSplit_ProductSplit_TaxonomyId_KpiToTaxonomy ProductSplit[] @relation("ProductSplit_TaxonomyId_KpiToTaxonomy")
331
- // productSplitGroup ProductSplitGroup[]
332
- // questionTaxonomy QuestionTaxonomy[]
333
- // surveyQuestionsForAggregation SurveyQuestionsForAggregation[]
334
- // surveyQuestionsWithTaxonomyAndProductSplit_SurveyQuestionsWithTaxonomyAndProductSplit_ProductTaxonomyIdToTaxonomy SurveyQuestionsWithTaxonomyAndProductSplit[] @relation("SurveyQuestionsWithTaxonomyAndProductSplit_ProductTaxonomyIdToTaxonomy")
335
- // surveyQuestionsWithTaxonomyAndProductSplit_SurveyQuestionsWithTaxonomyAndProductSplit_QuestionTaxonomyIdToTaxonomy SurveyQuestionsWithTaxonomyAndProductSplit[] @relation("SurveyQuestionsWithTaxonomyAndProductSplit_QuestionTaxonomyIdToTaxonomy")
336
- @@schema("Configuration")
337
- }
338
-
339
- ///@@Description("The discriminator for taxonomy")
340
- enum TaxonomyType {
341
- indicator
342
- function
343
- product
344
- other
345
-
346
- @@schema("Configuration")
347
- }
348
-
349
- ///@@Description("A taxonomy group is a grouping of taxonomies. It is meant to reflect groupings that do not fit directly in the hierarchical tree structure of `Taxonomy`.\nE.g. say different functions all have a \"Support\" function as a child-taxonomy - a \"Support Functions\" taxonomy group could group these and allow to define specific aggregations.")
350
- model TaxonomyGroup {
351
- id Int @id() @default(autoincrement())
352
-
353
- name String
354
- ///@@Description("The survey the taxonomy group belongs to.")
355
- surveyId Int
356
- survey Survey @relation("TaxonomyGroup_FK_SurveyId_Survey_Id", fields: [surveyId], references: [id], onUpdate: NoAction)
357
-
358
- ///@@Description("Used for Excel import/export - each taxonomy group is reflected as a separate column in the taxonomy tables.")
359
- excelCol Int?
360
-
361
- ///@@Description("The taxonomies that belong to this taxonomy group.")
362
- taxonomyGroupTaxonomies TaxonomyGroupTaxonomy[] @relation("TaxonomyGroupTaxonomy_FK_TaxonomyGroupId_TaxonomyGroup_Id")
363
-
364
- ///@@Description("The aggregations that use this taxonomy group as a filter.")
365
- aggregations Aggregation[] @relation("Aggregation_FK_FilterTaxonomyGroupId_TaxonomyGroup_Id")
366
-
367
- @@schema("Configuration")
368
- }
369
-
370
- model TaxonomyGroupTaxonomy {
371
- id Int @id() @default(autoincrement())
372
- taxonomyGroupId Int
373
- taxonomyId Int
374
-
375
- taxonomyGroup TaxonomyGroup @relation("TaxonomyGroupTaxonomy_FK_TaxonomyGroupId_TaxonomyGroup_Id", fields: [taxonomyGroupId], references: [id], onUpdate: NoAction)
376
- taxonomy Taxonomy @relation("TaxonomyGroupTaxonomy_FK_TaxonomyId_Taxonomy_Id", fields: [taxonomyId], references: [id], onUpdate: NoAction)
377
-
378
- @@schema("Configuration")
379
- }
380
-
381
- ///@@Description("A metric is the definition of a KPI. It consists of a numerator and an optional denominator aggregation.\nIt is the basis for the benchmarking: for each participant, all survey metrics are calculated and compared across the peer groups.")
382
- model Metric {
383
- id Int @id() @default(autoincrement())
384
- name String
385
-
386
- ///@@Description("The shorthand key for the metric.\nThe format is `N/D` where `N` is the numerator's aggregation key and `D` is the denominator's aggregation key.\n\nSee `Aggregation` for more information.")
387
- key String?
388
-
389
- ///@@Description("Metrics are optionally categorized into sections and subsections. This property reflects the section.")
390
- section String?
391
- ///@@Description("Metrics are optionally categorized into sections and subsections. This property reflects the subsection.")
392
- subection String?
393
- ///@@Description("Team-internal remarks for the metric.")
394
- remarks String?
395
-
396
- ///@@Description("The numerator for the metric.")
397
- numeratorId Int
398
- numerator Aggregation @relation("Metric_FK_NumeratorId_Aggregation_Id", fields: [numeratorId], references: [id], onDelete: NoAction, onUpdate: NoAction)
399
-
400
- ///@@Description("The optional denominator for the metric.")
401
- denominatorId Int?
402
- denominator Aggregation? @relation("Metric_FK_DenominatorId_Aggregation_Id", fields: [denominatorId], references: [id], onDelete: NoAction, onUpdate: NoAction)
403
-
404
- numberFormatId Int
405
- numberFormat NumberFormat @relation("Metric_FK_NumberFormatId_NumberFormat_Id", fields: [numberFormatId], references: [id], onUpdate: NoAction)
406
-
407
- ///@@Description("TBD")
408
- multiplicationFactor Float? @default(1.0)
409
- ///@@Description("By default, lower metric values are assumed to be better, e.g. for expenses.\nIf this property is set to `true`, this logic is inverted, e.g. for customer satisfaction.")
410
- isHigherBetter Boolean @default(false)
411
- ///@@Description("Sets the lower boundary for the metric value.\nIf the metric value is below this boundary, it will be set to the provided minimum value.")
412
- validationMinimum Float?
413
- ///@@Description("Sets the upper boundary for the metric value.\nIf the metric value is above this boundary, it will be set to the provided maximum value.")
414
- validationMaximum Float?
415
- ///@@Description("IF the metric cannot be calculated, it will be set to this value.")
416
- defaultValue Float?
417
-
418
- ///@@Description("During automatic outlier removal, metrics where this field is set to `true` will be ignored.")
419
- ignoreInOutlierRemoval Boolean @default(false)
420
- ///@@Description("Description for the IDP export.")
421
- description_IDPMetric String?
422
- ///@@Description("Mapping of old Excel key for reference.")
423
- oldExcelKey String?
424
-
425
- ///@@Ignore("Should not be required anymore as API takes care of keeping data in sync.")
426
- // isRefreshRequired Boolean
427
-
428
- ///@@Description("The order of the metric for a specific survey.")
429
- order Int?
430
-
431
- // metricOutlier MetricOutlier[]
432
- // metricResult MetricResult[]
433
- // peerGroupResult PeerGroupResult[]
434
- // productGroupResult ProductGroupResult[]
435
-
436
- @@schema("Configuration")
437
- }
438
-
439
- ///@@Description("A number format is used to format metrics.")
440
- model NumberFormat {
441
- id Int @id() @default(autoincrement())
442
- name String
443
- ///@@Description("The Excel format string for the number format.")
444
- excelFormat String
445
- metric Metric[] @relation("Metric_FK_NumberFormatId_NumberFormat_Id")
446
-
447
- @@schema("Configuration")
448
- }
449
-
450
- ///@@Description("An aggregation is a combination of a taxonomy and a filter.\nIt is used to define the numerator and denominator of a metric.")
451
- model Aggregation {
452
- id Int @id() @default(autoincrement())
453
- name String
454
-
455
- ///@@Description("A short-hand key for the aggregation.\nThe format is `I(F)`, where I is the indicator taxonomy key - and `F` describes the (optional) filter. The filter is a comma-separated list of taxonomy keys.\n\nExample: `E(PL,FO)` refers to the `Expenses` (E) filtered by product `Life` (PL) and function `Operations` (FO).")
456
- key String?
457
-
458
- ///@@Description("Some indicators (e.g. `Expenses`) are split along multiple dimensions (e.g. `Product` and `Channel`).\nIf the values would be aggregated, they would be double-counted. Hence, survey questions for the second split are marked as `AlternativeSplit` and by default are not included in the aggregation.\n\nThis property allows to use the alternative split instead of the default split.")
459
- useAlternativeSplit Boolean?
460
-
461
- ///@@Description("TBD - Not clear what this is for")
462
- isLinkedToTaxonomy Boolean
463
- ///@@Description("TBD - Not clear what this is for")
464
- isForProductSplit Boolean
465
- // isRefreshRequired Boolean
466
-
467
- //@@Description("The indicator taxonomy that each aggregation requires.")
468
- indicatorTaxonomyId Int
469
-
470
- indicatorTaxonomy Taxonomy @relation("Aggregation_FK_IndicatorTaxonomyId_Taxonomy_Indicator", fields: [indicatorTaxonomyId], references: [id], onDelete: NoAction, onUpdate: NoAction)
471
-
472
- ///@@Description("Optional list of taxonomies that are used to filter the aggregation.")
473
- filterTaxonomies Taxonomy[] @relation("Aggregation_Taxonomy_Filter")
474
-
475
- ///@@Description("Optional list of taxonomy groups that are used to filter the aggregation.")
476
- filterTaxonomyGroups TaxonomyGroup[] @relation("Aggregation_FK_FilterTaxonomyGroupId_TaxonomyGroup_Id")
477
-
478
- ///@@Description("The metrics that use this aggregation as numerator.")
479
- numerators Metric[] @relation("Metric_FK_NumeratorId_Aggregation_Id")
480
- ///@@Description("The metrics that use this aggregation as denominator.")
481
- denominators Metric[] @relation("Metric_FK_DenominatorId_Aggregation_Id")
482
-
483
- // aggregationDataImportValues AggregationDataImportValues[]
484
- // surveyQuestionsForAggregation SurveyQuestionsForAggregation[]
485
-
486
- @@unique([key, useAlternativeSplit, isForProductSplit], map: "Aggregration_UK")
487
- @@schema("Configuration")
488
- }
489
-
490
- // /// @@Ignore("test")
491
- // model AggregationDataImportValues {
492
- // AggregationId Int
493
- // AggregationKey String
494
- // DataImportId Int
495
- // Value Float
496
- // Aggregation Aggregation @relation(fields: [AggregationId], references: [Id], onUpdate: NoAction, map: "AggregationDataImportValues_FK_Aggregation_Id")
497
- // DataImport DataImport @relation(fields: [DataImportId], references: [Id], onUpdate: NoAction, map: "AggregationDataImportValues_FK_DataImport_Id")
498
-
499
- // @@id([AggregationId, DataImportId], map: "AggregationDataImportValues_PK")
500
- // @@index([DataImportId], map: "AggregationDataImportValues_IDX_DataImportId")
501
- // @@schema("Cache")
502
- // }
503
-
504
- // model DataImport {
505
- // Id Int @id() @default(autoincrement())
506
- // ParticipantId Int
507
- // ImportedByUser String
508
- // SourceFile String
509
- // TimeStamp DateTime @db.DateTime
510
- // ErrorCount Int
511
- // ValueCount Int
512
- // TextCount Int
513
- // BlankCount Int
514
- // ParticipantName String?
515
- // AggregationDataImportValues AggregationDataImportValues[]
516
- // Participant_DataImport_ParticipantIdToParticipant Participant @relation("DataImport_ParticipantIdToParticipant", fields: [ParticipantId], references: [Id], onUpdate: NoAction, map: "DataImport_FK_Participant_ParticipantId")
517
- // User User @relation(fields: [ImportedByUser], references: [Login], onUpdate: NoAction, map: "DataImport_FK_User_ImportedByUser")
518
- // MetricResult MetricResult[]
519
- // Participant_Participant_LatestDataImportIdToDataImport Participant[] @relation("Participant_LatestDataImportIdToDataImport")
520
- // ProductSplitData ProductSplitData[]
521
- // SurveyData SurveyData[]
522
-
523
- // @@schema("Participation")
524
- // }
525
-
526
- // model MetricOutlier {
527
- // Id Int @id() @default(autoincrement())
528
- // ParticipantId Int
529
- // MetricId Int
530
- // CreatedByUser String
531
- // ValueInitial Float?
532
- // ValueCorrected Float?
533
- // Comment String?
534
- // Metric Metric @relation(fields: [MetricId], references: [Id], onUpdate: NoAction, map: "MetricOutlier_FK_Metric_Id")
535
- // Participant Participant @relation(fields: [ParticipantId], references: [Id], onUpdate: NoAction, map: "MetricOutlier_FK_Participant_Id")
536
- // User User @relation(fields: [CreatedByUser], references: [Login], onUpdate: NoAction, map: "MetricOutlier_FK_User_Login")
537
-
538
- // @@unique([ParticipantId, MetricId], map: "MetricOutlier_UK_ParticipantId_MetricId")
539
- // @@schema("Participation")
540
- // }
541
-
542
- // /// @@Ignore("No single PK yet")
543
- // model MetricResult {
544
- // MetricId Int
545
- // DataImportId Int
546
- // SourceValue Float?
547
- // Value Float?
548
- // DataImport DataImport @relation(fields: [DataImportId], references: [Id], onUpdate: NoAction, map: "MetricResult_FK_DataImport_Id")
549
- // Metric Metric @relation(fields: [MetricId], references: [Id], onUpdate: NoAction, map: "MetricResult_FK_Metric_Id")
550
-
551
- // @@id([MetricId, DataImportId], map: "MetricResult_PK")
552
- // @@schema("Benchmark")
553
- // }
554
-
555
- // model ParticipantChartSetting {
556
- // Id Int @id() @default(autoincrement())
557
- // ParticipantId Int
558
- // SettingName String
559
- // Value String
560
- // Participant Participant @relation(fields: [ParticipantId], references: [Id], onDelete: Cascade, onUpdate: NoAction, map: "ParticipantChartSetting_FK_Participant_Id")
561
-
562
- // @@unique([ParticipantId, SettingName], map: "ParticipantChartSetting_UK_ParticipantId_SettingName")
563
- // @@schema("Participation")
564
- // }
565
-
566
- // /// @@Ignore("No single PK yet")
567
- // model PeerGroupResult {
568
- // PeerGroupId Int
569
- // MetricId Int
570
- // Mean Float?
571
- // Count Int
572
- // TQ Float?
573
- // Median Float?
574
- // BQ Float?
575
- // Metric Metric @relation(fields: [MetricId], references: [Id], onUpdate: NoAction, map: "PeerGroupResult_FK_Metric_Id")
576
- // PeerGroup PeerGroup @relation(fields: [PeerGroupId], references: [Id], onUpdate: NoAction, map: "PeerGroupResult_FK_PeerGroup_Id")
577
-
578
- // @@id([PeerGroupId, MetricId], map: "PeerGroupResult_PK_PeerGroupId_MetricId")
579
- // @@schema("Benchmark")
580
- // }
581
-
582
- // /// @@Ignore("No single PK yet")
583
- // model ProductGroupResult {
584
- // ProductGroupId Int
585
- // SurveyId Int
586
- // Year Int
587
- // MetricId Int
588
- // Mean Float?
589
- // Count Int?
590
- // TQ Float?
591
- // Median Float?
592
- // BQ Float?
593
- // Metric Metric @relation(fields: [MetricId], references: [Id], onUpdate: NoAction, map: "ProductGroupResult_FK_Metric_Id")
594
- // ProductGroup ProductGroup @relation(fields: [ProductGroupId], references: [Id], onUpdate: NoAction, map: "ProductGroupResult_FK_ProductGroup_Id")
595
- // Survey Survey @relation(fields: [SurveyId], references: [Id], onUpdate: NoAction, map: "ProductGroupResult_FK_Survey_Id")
596
-
597
- // @@id([ProductGroupId, Year, MetricId], map: "ProductGroupResut_PK")
598
- // @@schema("Benchmark")
599
- // }
600
-
601
- // model ProductSplit {
602
- // Id Int @id()
603
- // SurveyId Int
604
- // Name String
605
- // Code String
606
- // IsNoSplit Boolean
607
- // IsDefault Boolean
608
- // HasDetailedSplit Boolean
609
- // TaxonomyId_Function Int?
610
- // TaxonomyId_Kpi Int?
611
- // Survey Survey @relation(fields: [SurveyId], references: [Id], onUpdate: NoAction, map: "ProductSplit_FK_Survey_Id")
612
- // Taxonomy_ProductSplit_TaxonomyId_FunctionToTaxonomy Taxonomy? @relation("ProductSplit_TaxonomyId_FunctionToTaxonomy", fields: [TaxonomyId_Function], references: [Id], onDelete: NoAction, onUpdate: NoAction, map: "ProductSplit_FK_Taxonomy_TaxonomyId_Function")
613
- // Taxonomy_ProductSplit_TaxonomyId_KpiToTaxonomy Taxonomy? @relation("ProductSplit_TaxonomyId_KpiToTaxonomy", fields: [TaxonomyId_Kpi], references: [Id], onDelete: NoAction, onUpdate: NoAction, map: "ProductSplit_FK_Taxonomy_TaxonomyId_Kpi")
614
- // ProductSplitData ProductSplitData[]
615
- // SurveyQuestion SurveyQuestion[]
616
- // SurveyQuestionsForAggregation SurveyQuestionsForAggregation[]
617
- // SurveyQuestionsWithTaxonomyAndProductSplit SurveyQuestionsWithTaxonomyAndProductSplit[]
618
-
619
- // @@schema("Configuration")
620
- // }
621
-
622
- // model ProductSplitAggregations {
623
- // Id Int @id() @default(autoincrement())
624
- // ProductSplitId Int
625
- // AggregrationId_Numerator Int
626
- // TaxonomyId_Product String
627
- // AggregationId_Denominator Int
628
-
629
- // @@schema("Cache")
630
- // }
631
-
632
- // model ProductSplitData {
633
- // Id Int @id() @default(autoincrement())
634
- // DataImportId Int
635
- // ProductSplitId Int
636
- // PA Float?
637
- // PAF Float?
638
- // PAI Float?
639
- // PAV Float?
640
- // PH Float?
641
- // PHD Float?
642
- // PHL Float?
643
- // PHO Float?
644
- // PL Float?
645
- // PLI Float?
646
- // PLT Float?
647
- // PLU Float?
648
- // PLV Float?
649
- // PLW Float?
650
- // DataImport DataImport @relation(fields: [DataImportId], references: [Id], onUpdate: NoAction, map: "ProductSplitData_FK_DataImport_Id")
651
- // ProductSplit ProductSplit @relation(fields: [ProductSplitId], references: [Id], onUpdate: NoAction, map: "ProductSplitData_FK_ProductSplit_Id")
652
-
653
- // @@schema("Participation")
654
- // }
655
-
656
- // /// @@Ignore("No single PK yet")
657
- // model ProductSplitDataUnpivot {
658
- // DataImportId Int
659
- // ProductSplitId Int
660
- // TaxonomyId String
661
- // Split Float
662
-
663
- // @@id([DataImportId, ProductSplitId, TaxonomyId], map: "ProductSplitDataUnpivot_PK")
664
- // @@schema("Cache")
665
- // }
666
-
667
- // model ProductSplitGroup {
668
- // Id Int @id()
669
- // SurveyId Int
670
- // Name String
671
- // TaxonomyId Int
672
- // IsDetailed Boolean?
673
- // IsTotal Boolean
674
- // Survey Survey @relation(fields: [SurveyId], references: [Id], onUpdate: NoAction, map: "ProductSplitGroup_FK_Survey_Id")
675
- // Taxonomy Taxonomy @relation(fields: [TaxonomyId], references: [Id], onUpdate: NoAction, map: "ProductSplitGroup_FK_Taxonomy_Id")
676
-
677
- // @@schema("Configuration")
678
- // }
679
-
680
- // model Question {
681
- // Id Int @id() @default(autoincrement())
682
- // SurveyId Int
683
- // Key String?
684
- // IsInput Boolean @default(true, map: "DF__Question__IsInpu__04E4BC85")
685
- // IsLinkedToTaxonomy Boolean
686
- // Survey Survey @relation(fields: [SurveyId], references: [Id], onUpdate: NoAction, map: "Question_FK_Survey_Id")
687
- // QuestionTaxonomy QuestionTaxonomy[]
688
- // SurveyQuestion SurveyQuestion[]
689
- // SurveyQuestionsForAggregation SurveyQuestionsForAggregation[]
690
- // SurveyQuestionsWithTaxonomyAndProductSplit SurveyQuestionsWithTaxonomyAndProductSplit[]
691
-
692
- // @@schema("Configuration")
693
- // }
694
-
695
- // /// @@Ignore("No single PK yet")
696
- // model QuestionTaxonomy {
697
- // QuestionId Int
698
- // TaxonomyId Int
699
- // Question Question @relation(fields: [QuestionId], references: [Id], onDelete: Cascade, onUpdate: NoAction, map: "QuestionTaxonomy_FK_Question_Key")
700
- // Taxonomy Taxonomy @relation(fields: [TaxonomyId], references: [Id], onDelete: Cascade, onUpdate: NoAction, map: "QuestionTaxonomy_FK_Taxonomies_Key")
701
-
702
- // @@id([QuestionId, TaxonomyId], map: "QuestionTaxonomy_PK")
703
- // @@schema("Configuration")
704
- // }
705
-
706
- // model SurveyData {
707
- // Id Int @id() @default(autoincrement())
708
- // DataImportId Int
709
- // SurveyQuestionId Int
710
- // Value Float?
711
- // TextValue String?
712
- // ImportError String?
713
- // CellSourceValue String?
714
- // CellSourceFormula String?
715
- // CellComment String?
716
- // DataImport DataImport @relation(fields: [DataImportId], references: [Id], onUpdate: NoAction, map: "SurveyData_FK_DataImport_Id")
717
- // SurveyQuestion SurveyQuestion @relation(fields: [SurveyQuestionId], references: [Id], onUpdate: NoAction, map: "SurveyData_FK_SurveyQuestion_Id")
718
-
719
- // @@schema("Participation")
720
- // }
721
-
722
- // model SurveyQuestion {
723
- // Id Int @id() @default(autoincrement())
724
- // SurveyId Int
725
- // QuestionId Int
726
- // TemplateWorksheet String
727
- // TemplateRow Int
728
- // TemplateColumn Int
729
- // RowLabel String?
730
- // ColumnLabel String?
731
- // SectionLabel String?
732
- // IsGeneratedDuringImport Boolean @default(false, map: "DF__SurveyQue__IsGen__7E37BEF6")
733
- // IsCalculatedInExcel Boolean @default(false, map: "DF__SurveyQue__IsCal__7F2BE32F")
734
- // ExcelFormula String?
735
- // IsDuplicate Boolean @default(false, map: "DF__SurveyQue__IsDup__00200768")
736
- // IsDuplicateSplit Boolean @default(false, map: "DF__SurveyQue__IsDup__01142BA1")
737
- // ProvidedInLastImport Boolean @default(true, map: "DF__SurveyQue__Provi__02084FDA")
738
- // OldExcelId Int?
739
- // ProductSplitKey String?
740
- // IsInvalidInput Boolean?
741
- // ProductSplitId Int?
742
- // IsText Boolean
743
- // SurveyData SurveyData[]
744
- // ProductSplit ProductSplit? @relation(fields: [ProductSplitId], references: [Id], onDelete: NoAction, onUpdate: NoAction, map: "SurveyQuestion_FK_ProductSplit_Id")
745
- // Question Question @relation(fields: [QuestionId], references: [Id], onDelete: Cascade, onUpdate: NoAction, map: "SurveyQuestion_FK_Question_Key")
746
- // Survey Survey @relation(fields: [SurveyId], references: [Id], onDelete: Cascade, onUpdate: NoAction, map: "SurveyQuestion_FK_Survey_Key")
747
- // SurveyQuestionsForAggregation SurveyQuestionsForAggregation[]
748
- // SurveyQuestionsWithTaxonomyAndProductSplit SurveyQuestionsWithTaxonomyAndProductSplit[]
749
-
750
- // @@schema("Configuration")
751
- // }
752
-
753
- // /// @@Ignore("No single PK yet")
754
- // model SurveyQuestionsForAggregation {
755
- // AggregationId Int
756
- // QuestionId Int
757
- // SurveyQuestionId Int
758
- // ProductTaxonomyId Int
759
- // ProductSplitId Int
760
- // AggregationKey String
761
- // QuestionKey String
762
- // AggregationFactor Float?
763
- // IsForProductSplit Boolean
764
- // Aggregation Aggregation @relation(fields: [AggregationId], references: [Id], onUpdate: NoAction, map: "SurveyQuestionsForAggregation_FK_Aggregation_Id")
765
- // ProductSplit ProductSplit @relation(fields: [ProductSplitId], references: [Id], onUpdate: NoAction, map: "SurveyQuestionsForAggregation_FK_ProductSplit_Id")
766
- // Taxonomy Taxonomy @relation(fields: [ProductTaxonomyId], references: [Id], onUpdate: NoAction, map: "SurveyQuestionsForAggregation_FK_ProductTaxonomy_Id")
767
- // Question Question @relation(fields: [QuestionId], references: [Id], onUpdate: NoAction, map: "SurveyQuestionsForAggregation_FK_Question_Id")
768
- // SurveyQuestion SurveyQuestion @relation(fields: [SurveyQuestionId], references: [Id], onUpdate: NoAction, map: "SurveyQuestionsForAggregation_FK_SurveyQuestion_Id")
769
-
770
- // @@id([AggregationId, QuestionId, SurveyQuestionId, ProductTaxonomyId, ProductSplitId, IsForProductSplit], map: "SurveyQuestionsForAggregation_PK")
771
- // @@schema("Cache")
772
- // }
773
-
774
- // /// @@Ignore("No single PK yet")
775
- // model SurveyQuestionsWithTaxonomyAndProductSplit {
776
- // QuestionId Int
777
- // QuestionKey String?
778
- // SurveyQuestionId Int
779
- // SurveyQuestionIsDuplicateSplit Int
780
- // QuestionTaxonomyId Int
781
- // ProductTaxonomyId Int
782
- // ProductSplitId Int
783
- // IsRatio Boolean
784
- // IsKpi Boolean
785
- // AggregationFactor Float?
786
- // ProductSplit ProductSplit @relation(fields: [ProductSplitId], references: [Id], onUpdate: NoAction, map: "SurveyQuestionsWithTaxonomyAndProductSplit_FK_ProductSplit_Id")
787
- // Taxonomy_SurveyQuestionsWithTaxonomyAndProductSplit_ProductTaxonomyIdToTaxonomy Taxonomy @relation("SurveyQuestionsWithTaxonomyAndProductSplit_ProductTaxonomyIdToTaxonomy", fields: [ProductTaxonomyId], references: [Id], onUpdate: NoAction, map: "SurveyQuestionsWithTaxonomyAndProductSplit_FK_ProductTaxonomy_Id")
788
- // Question Question @relation(fields: [QuestionId], references: [Id], onUpdate: NoAction, map: "SurveyQuestionsWithTaxonomyAndProductSplit_FK_Question_Id")
789
- // Taxonomy_SurveyQuestionsWithTaxonomyAndProductSplit_QuestionTaxonomyIdToTaxonomy Taxonomy @relation("SurveyQuestionsWithTaxonomyAndProductSplit_QuestionTaxonomyIdToTaxonomy", fields: [QuestionTaxonomyId], references: [Id], onUpdate: NoAction, map: "SurveyQuestionsWithTaxonomyAndProductSplit_FK_QuestionTaxonomy_Id")
790
- // SurveyQuestion SurveyQuestion @relation(fields: [SurveyQuestionId], references: [Id], onUpdate: NoAction, map: "SurveyQuestionsWithTaxonomyAndProductSplit_FK_SurveyQuestion_Id")
791
-
792
- // @@id([QuestionId, SurveyQuestionId, QuestionTaxonomyId, ProductTaxonomyId, ProductSplitId], map: "SurveyQuestionsWithTaxonomyAndProductSplit_PK")
793
- // @@schema("Cache")
794
- // }
795
-
796
- // model TaxonomyFull {
797
- // Id Int @id()
798
- // SurveyId Int
799
- // Key String
800
- // Level Int
801
- // ParentKey String?
802
- // LevelKey String @db.NChar(1)
803
- // L1LevelKey String @db.NChar(1)
804
- // L2LevelKey String? @db.NChar(1)
805
- // L3LevelKey String? @db.NChar(1)
806
- // L4LevelKey String? @db.NChar(1)
807
- // L5LevelKey String? @db.NChar(1)
808
- // L6LevelKey String? @db.NChar(1)
809
- // L7LevelKey String? @db.NChar(1)
810
- // L8LevelKey String? @db.NChar(1)
811
- // Name String
812
- // NameFull String
813
- // Synonyms String?
814
- // L1Name String
815
- // L2Name String?
816
- // L3Name String?
817
- // L4Name String?
818
- // L5Name String?
819
- // L6Name String?
820
- // L7Name String?
821
- // L8Name String?
822
- // L1Order Int?
823
- // L2Order Int?
824
- // L3Order Int?
825
- // L4Order Int?
826
- // L5Order Int?
827
- // L6Order Int?
828
- // L7Order Int?
829
- // L8Order Int?
830
- // Kpi_HasChannelBreakDown Boolean?
831
- // Kpi_Unit String?
832
- // Kpi_IsRatio Boolean?
833
- // Kpi_SplitByProduct Boolean?
834
- // Kpi_ExportProductOnly String?
835
- // Kpi_OnlyKPIAggregation Boolean?
836
- // Kpi_AggregationFactor Float?
837
- // Function_IsSummation Boolean?
838
- // L1IdFull String? @db.NChar(2)
839
- // L2IdFull String? @db.NChar(3)
840
- // L3IdFull String? @db.NChar(4)
841
- // L4IdFull String? @db.NChar(5)
842
- // L5IdFull String? @db.NChar(6)
843
- // L6IdFull String? @db.NChar(7)
844
- // L7IdFull String? @db.NChar(8)
845
- // L8IdFull String? @db.NChar(9)
846
- // Group1 String?
847
- // Group2 String?
848
- // Group3 String?
849
- // Function_Section String?
850
- // Notes String?
851
-
852
- // @@unique([SurveyId, Key], map: "TaxonomyFull_UK_SurveyId_Key")
853
- // @@schema("Cache")
854
- // }
855
-
856
- // model User {
857
- // Login String @id()
858
- // DataImport DataImport[]
859
- // MetricOutlier MetricOutlier[]
860
-
861
- // @@schema("User")
862
- // }