@baseplate-dev/fastify-generators 0.5.3 → 0.6.1
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.
- package/CHANGELOG.md +70 -0
- package/dist/constants/fastify-packages.d.ts +14 -14
- package/dist/constants/fastify-packages.js +14 -14
- package/dist/constants/fastify-packages.js.map +1 -1
- package/dist/generators/auth/auth-context/templates/module/types/auth-context.types.ts +1 -0
- package/dist/generators/auth/auth-context/templates/module/utils/auth-context.utils.ts +3 -1
- package/dist/generators/core/fastify/fastify.generator.d.ts.map +1 -1
- package/dist/generators/core/fastify/fastify.generator.js +3 -1
- package/dist/generators/core/fastify/fastify.generator.js.map +1 -1
- package/dist/generators/pothos/index.d.ts +1 -0
- package/dist/generators/pothos/index.d.ts.map +1 -1
- package/dist/generators/pothos/index.js +1 -0
- package/dist/generators/pothos/index.js.map +1 -1
- package/dist/generators/pothos/pothos-auth/pothos-auth.generator.d.ts +5 -0
- package/dist/generators/pothos/pothos-auth/pothos-auth.generator.d.ts.map +1 -1
- package/dist/generators/pothos/pothos-auth/pothos-auth.generator.js +8 -0
- package/dist/generators/pothos/pothos-auth/pothos-auth.generator.js.map +1 -1
- package/dist/generators/pothos/pothos-prisma-count-query/index.d.ts +2 -0
- package/dist/generators/pothos/pothos-prisma-count-query/index.d.ts.map +1 -0
- package/dist/generators/pothos/pothos-prisma-count-query/index.js +2 -0
- package/dist/generators/pothos/pothos-prisma-count-query/index.js.map +1 -0
- package/dist/generators/pothos/pothos-prisma-count-query/pothos-prisma-count-query.generator.d.ts +16 -0
- package/dist/generators/pothos/pothos-prisma-count-query/pothos-prisma-count-query.generator.d.ts.map +1 -0
- package/dist/generators/pothos/pothos-prisma-count-query/pothos-prisma-count-query.generator.js +104 -0
- package/dist/generators/pothos/pothos-prisma-count-query/pothos-prisma-count-query.generator.js.map +1 -0
- package/dist/generators/pothos/pothos-prisma-crud-mutation/pothos-prisma-crud-mutation.generator.d.ts.map +1 -1
- package/dist/generators/pothos/pothos-prisma-crud-mutation/pothos-prisma-crud-mutation.generator.js +2 -5
- package/dist/generators/pothos/pothos-prisma-crud-mutation/pothos-prisma-crud-mutation.generator.js.map +1 -1
- package/dist/generators/pothos/pothos-prisma-find-query/pothos-prisma-find-query.generator.d.ts +4 -0
- package/dist/generators/pothos/pothos-prisma-find-query/pothos-prisma-find-query.generator.d.ts.map +1 -1
- package/dist/generators/pothos/pothos-prisma-find-query/pothos-prisma-find-query.generator.js +52 -10
- package/dist/generators/pothos/pothos-prisma-find-query/pothos-prisma-find-query.generator.js.map +1 -1
- package/dist/generators/pothos/pothos-prisma-list-query/pothos-prisma-list-query.generator.d.ts +4 -0
- package/dist/generators/pothos/pothos-prisma-list-query/pothos-prisma-list-query.generator.d.ts.map +1 -1
- package/dist/generators/pothos/pothos-prisma-list-query/pothos-prisma-list-query.generator.js +39 -3
- package/dist/generators/pothos/pothos-prisma-list-query/pothos-prisma-list-query.generator.js.map +1 -1
- package/dist/generators/pothos/pothos-prisma-object/pothos-prisma-object.generator.d.ts +7 -1
- package/dist/generators/pothos/pothos-prisma-object/pothos-prisma-object.generator.d.ts.map +1 -1
- package/dist/generators/pothos/pothos-prisma-object/pothos-prisma-object.generator.js +73 -13
- package/dist/generators/pothos/pothos-prisma-object/pothos-prisma-object.generator.js.map +1 -1
- package/dist/generators/prisma/_shared/build-data-helpers/generate-authorize-fragment.d.ts +20 -0
- package/dist/generators/prisma/_shared/build-data-helpers/generate-authorize-fragment.d.ts.map +1 -0
- package/dist/generators/prisma/_shared/build-data-helpers/generate-authorize-fragment.js +28 -0
- package/dist/generators/prisma/_shared/build-data-helpers/generate-authorize-fragment.js.map +1 -0
- package/dist/generators/prisma/_shared/build-data-helpers/generate-operation-callbacks.d.ts +48 -55
- package/dist/generators/prisma/_shared/build-data-helpers/generate-operation-callbacks.d.ts.map +1 -1
- package/dist/generators/prisma/_shared/build-data-helpers/generate-operation-callbacks.js +130 -67
- package/dist/generators/prisma/_shared/build-data-helpers/generate-operation-callbacks.js.map +1 -1
- package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.d.ts +2 -0
- package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.d.ts.map +1 -1
- package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.js +3 -3
- package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.js.map +1 -1
- package/dist/generators/prisma/_shared/build-data-helpers/index.d.ts +1 -0
- package/dist/generators/prisma/_shared/build-data-helpers/index.d.ts.map +1 -1
- package/dist/generators/prisma/_shared/build-data-helpers/index.js +1 -0
- package/dist/generators/prisma/_shared/build-data-helpers/index.js.map +1 -1
- package/dist/generators/prisma/data-utils/data-utils.generator.d.ts +25 -6
- package/dist/generators/prisma/data-utils/data-utils.generator.d.ts.map +1 -1
- package/dist/generators/prisma/data-utils/generated/index.d.ts +78 -23
- package/dist/generators/prisma/data-utils/generated/index.d.ts.map +1 -1
- package/dist/generators/prisma/data-utils/generated/template-paths.d.ts +3 -1
- package/dist/generators/prisma/data-utils/generated/template-paths.d.ts.map +1 -1
- package/dist/generators/prisma/data-utils/generated/template-paths.js +3 -1
- package/dist/generators/prisma/data-utils/generated/template-paths.js.map +1 -1
- package/dist/generators/prisma/data-utils/generated/ts-import-providers.d.ts +75 -18
- package/dist/generators/prisma/data-utils/generated/ts-import-providers.d.ts.map +1 -1
- package/dist/generators/prisma/data-utils/generated/ts-import-providers.js +26 -8
- package/dist/generators/prisma/data-utils/generated/ts-import-providers.js.map +1 -1
- package/dist/generators/prisma/data-utils/generated/typed-templates.d.ts +106 -34
- package/dist/generators/prisma/data-utils/generated/typed-templates.d.ts.map +1 -1
- package/dist/generators/prisma/data-utils/generated/typed-templates.js +61 -14
- package/dist/generators/prisma/data-utils/generated/typed-templates.js.map +1 -1
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/commit-operations.ts +366 -0
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/compose-operations.ts +131 -0
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/field-definitions.ts +26 -30
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/field-utils.ts +201 -0
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/prisma-types.ts +24 -20
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/prisma-utils.ts +14 -6
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/relation-helpers.ts +21 -26
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/types.ts +374 -25
- package/dist/generators/prisma/index.d.ts +2 -0
- package/dist/generators/prisma/index.d.ts.map +1 -1
- package/dist/generators/prisma/index.js +2 -0
- package/dist/generators/prisma/index.js.map +1 -1
- package/dist/generators/prisma/prisma-authorizer-utils/generated/index.d.ts +50 -12
- package/dist/generators/prisma/prisma-authorizer-utils/generated/index.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-authorizer-utils/generated/template-renderers.d.ts +25 -6
- package/dist/generators/prisma/prisma-authorizer-utils/generated/template-renderers.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-authorizer-utils/generated/typed-templates.d.ts +50 -12
- package/dist/generators/prisma/prisma-authorizer-utils/generated/typed-templates.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-authorizer-utils/prisma-authorizer-utils.generator.d.ts +25 -6
- package/dist/generators/prisma/prisma-authorizer-utils/prisma-authorizer-utils.generator.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-data-create/prisma-data-create.generator.d.ts +26 -6
- package/dist/generators/prisma/prisma-data-create/prisma-data-create.generator.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-data-create/prisma-data-create.generator.js +53 -25
- package/dist/generators/prisma/prisma-data-create/prisma-data-create.generator.js.map +1 -1
- package/dist/generators/prisma/prisma-data-delete/prisma-data-delete.generator.d.ts +31 -6
- package/dist/generators/prisma/prisma-data-delete/prisma-data-delete.generator.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-data-delete/prisma-data-delete.generator.js +52 -15
- package/dist/generators/prisma/prisma-data-delete/prisma-data-delete.generator.js.map +1 -1
- package/dist/generators/prisma/prisma-data-nested-field/prisma-data-nested-field.generator.d.ts +25 -6
- package/dist/generators/prisma/prisma-data-nested-field/prisma-data-nested-field.generator.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-data-service/prisma-data-service.generator.d.ts +25 -6
- package/dist/generators/prisma/prisma-data-service/prisma-data-service.generator.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-data-update/prisma-data-update.generator.d.ts +31 -6
- package/dist/generators/prisma/prisma-data-update/prisma-data-update.generator.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-data-update/prisma-data-update.generator.js +65 -23
- package/dist/generators/prisma/prisma-data-update/prisma-data-update.generator.js.map +1 -1
- package/dist/generators/prisma/prisma-model-authorizer/prisma-model-authorizer.generator.d.ts +2 -0
- package/dist/generators/prisma/prisma-model-authorizer/prisma-model-authorizer.generator.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-model-authorizer/prisma-model-authorizer.generator.js +86 -53
- package/dist/generators/prisma/prisma-model-authorizer/prisma-model-authorizer.generator.js.map +1 -1
- package/dist/generators/prisma/prisma-model-query-filter/index.d.ts +2 -0
- package/dist/generators/prisma/prisma-model-query-filter/index.d.ts.map +1 -0
- package/dist/generators/prisma/prisma-model-query-filter/index.js +2 -0
- package/dist/generators/prisma/prisma-model-query-filter/index.js.map +1 -0
- package/dist/generators/prisma/prisma-model-query-filter/prisma-model-query-filter.generator.d.ts +60 -0
- package/dist/generators/prisma/prisma-model-query-filter/prisma-model-query-filter.generator.d.ts.map +1 -0
- package/dist/generators/prisma/prisma-model-query-filter/prisma-model-query-filter.generator.js +124 -0
- package/dist/generators/prisma/prisma-model-query-filter/prisma-model-query-filter.generator.js.map +1 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/index.d.ts +364 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/index.d.ts.map +1 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/index.js +13 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/index.js.map +1 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/template-paths.d.ts +13 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/template-paths.d.ts.map +1 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/template-paths.js +25 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/template-paths.js.map +1 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/template-renderers.d.ts +131 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/template-renderers.d.ts.map +1 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/template-renderers.js +49 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/template-renderers.js.map +1 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/ts-import-providers.d.ts +66 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/ts-import-providers.d.ts.map +1 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/ts-import-providers.js +40 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/ts-import-providers.js.map +1 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/typed-templates.d.ts +411 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/typed-templates.d.ts.map +1 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/typed-templates.js +46 -0
- package/dist/generators/prisma/prisma-query-filter-utils/generated/typed-templates.js.map +1 -0
- package/dist/generators/prisma/prisma-query-filter-utils/index.d.ts +4 -0
- package/dist/generators/prisma/prisma-query-filter-utils/index.d.ts.map +1 -0
- package/dist/generators/prisma/prisma-query-filter-utils/index.js +3 -0
- package/dist/generators/prisma/prisma-query-filter-utils/index.js.map +1 -0
- package/dist/generators/prisma/prisma-query-filter-utils/prisma-query-filter-utils.generator.d.ts +156 -0
- package/dist/generators/prisma/prisma-query-filter-utils/prisma-query-filter-utils.generator.d.ts.map +1 -0
- package/dist/generators/prisma/prisma-query-filter-utils/prisma-query-filter-utils.generator.js +32 -0
- package/dist/generators/prisma/prisma-query-filter-utils/prisma-query-filter-utils.generator.js.map +1 -0
- package/dist/generators/prisma/prisma-query-filter-utils/templates/src/utils/query-filters.ts +209 -0
- package/dist/generators/prisma/prisma-query-filter-utils/templates/src/utils/query-helpers.ts +70 -0
- package/dist/generators/vitest/prisma-vitest/generated/index.d.ts +0 -6
- package/dist/generators/vitest/prisma-vitest/generated/index.d.ts.map +1 -1
- package/dist/generators/vitest/prisma-vitest/generated/template-renderers.d.ts.map +1 -1
- package/dist/generators/vitest/prisma-vitest/generated/template-renderers.js +0 -1
- package/dist/generators/vitest/prisma-vitest/generated/template-renderers.js.map +1 -1
- package/dist/generators/vitest/prisma-vitest/generated/typed-templates.d.ts +0 -6
- package/dist/generators/vitest/prisma-vitest/generated/typed-templates.d.ts.map +1 -1
- package/dist/generators/vitest/prisma-vitest/generated/typed-templates.js +1 -4
- package/dist/generators/vitest/prisma-vitest/generated/typed-templates.js.map +1 -1
- package/dist/generators/vitest/prisma-vitest/templates/src/tests/helpers/prisma.test-helper.ts +2 -10
- package/dist/types/service-dto-kinds.d.ts +0 -6
- package/dist/types/service-dto-kinds.d.ts.map +1 -1
- package/dist/types/service-dto-kinds.js +0 -6
- package/dist/types/service-dto-kinds.js.map +1 -1
- package/dist/writers/pothos/helpers.d.ts +1 -0
- package/dist/writers/pothos/helpers.d.ts.map +1 -1
- package/dist/writers/pothos/helpers.js +1 -0
- package/dist/writers/pothos/helpers.js.map +1 -1
- package/dist/writers/pothos/scalar-fields.d.ts +3 -1
- package/dist/writers/pothos/scalar-fields.d.ts.map +1 -1
- package/dist/writers/pothos/scalar-fields.js +1 -0
- package/dist/writers/pothos/scalar-fields.js.map +1 -1
- package/dist/writers/prisma-schema/fields.d.ts +1 -1
- package/dist/writers/prisma-schema/fields.js +2 -2
- package/dist/writers/prisma-schema/fields.js.map +1 -1
- package/package.json +8 -8
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/define-operations.ts +0 -1134
package/dist/generators/pothos/pothos-prisma-find-query/pothos-prisma-find-query.generator.d.ts
CHANGED
|
@@ -2,6 +2,9 @@ export declare const pothosPrismaFindQueryGenerator: import("@baseplate-dev/sync
|
|
|
2
2
|
modelName: string;
|
|
3
3
|
order: number;
|
|
4
4
|
hasPrimaryKeyInputType: boolean;
|
|
5
|
+
queryFilterRef?: string | undefined;
|
|
6
|
+
queryFilterRoles?: string[] | undefined;
|
|
7
|
+
queryFilterBypassRoles?: string[] | undefined;
|
|
5
8
|
}, {
|
|
6
9
|
main: import("@baseplate-dev/sync").GeneratorTask<{
|
|
7
10
|
pothosField: import("@baseplate-dev/sync").ProviderExport<import("#src/generators/pothos/_providers/index.js").PothosFieldProvider>;
|
|
@@ -10,6 +13,7 @@ export declare const pothosPrismaFindQueryGenerator: import("@baseplate-dev/sync
|
|
|
10
13
|
pothosTypesFile: import("@baseplate-dev/sync").ProviderType<import("../pothos-types-file/pothos-types-file.generator.js").PothosTypesFileProvider>;
|
|
11
14
|
pothosSchemaBaseTypes: import("@baseplate-dev/sync").ProviderType<import("../pothos/pothos.generator.js").PothosSchemaBaseTypesProvider>;
|
|
12
15
|
pothosPrimaryKeyInputType: import("@baseplate-dev/sync").ProviderDependency<import("#src/generators/pothos/_providers/index.js").PothosTypeOutputProvider | undefined>;
|
|
16
|
+
queryFilter: import("@baseplate-dev/sync").ProviderDependency<import("#src/generators/prisma/prisma-model-query-filter/index.js").PrismaModelQueryFilterProvider | undefined>;
|
|
13
17
|
}, any>;
|
|
14
18
|
}>;
|
|
15
19
|
//# sourceMappingURL=pothos-prisma-find-query.generator.d.ts.map
|
package/dist/generators/pothos/pothos-prisma-find-query/pothos-prisma-find-query.generator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pothos-prisma-find-query.generator.d.ts","sourceRoot":"","sources":["../../../../src/generators/pothos/pothos-prisma-find-query/pothos-prisma-find-query.generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pothos-prisma-find-query.generator.d.ts","sourceRoot":"","sources":["../../../../src/generators/pothos/pothos-prisma-find-query/pothos-prisma-find-query.generator.ts"],"names":[],"mappings":"AA2DA,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;EA8JzC,CAAC"}
|
package/dist/generators/pothos/pothos-prisma-find-query/pothos-prisma-find-query.generator.js
CHANGED
|
@@ -4,6 +4,7 @@ import { quot, sortObjectKeys } from '@baseplate-dev/utils';
|
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { pothosFieldProvider, pothosTypeOutputProvider, } from '#src/generators/pothos/_providers/index.js';
|
|
6
6
|
import { getModelIdFieldName, getPrimaryKeyDefinition, } from '#src/generators/prisma/_shared/crud-method/primary-key-input.js';
|
|
7
|
+
import { prismaModelQueryFilterProvider } from '#src/generators/prisma/prisma-model-query-filter/index.js';
|
|
7
8
|
import { prismaOutputProvider } from '#src/generators/prisma/prisma/index.js';
|
|
8
9
|
import { lowerCaseFirst } from '#src/utils/case.js';
|
|
9
10
|
import { writePothosArgsFromDtoFields } from '#src/writers/pothos/index.js';
|
|
@@ -24,13 +25,26 @@ const descriptorSchema = z.object({
|
|
|
24
25
|
* Whether the model has a primary key input type.
|
|
25
26
|
*/
|
|
26
27
|
hasPrimaryKeyInputType: z.boolean(),
|
|
28
|
+
/**
|
|
29
|
+
* Model name key to look up the query filter provider. When set,
|
|
30
|
+
* the resolve function will spread `queryFilter.buildWhere(ctx, roles)`.
|
|
31
|
+
*/
|
|
32
|
+
queryFilterRef: z.string().optional(),
|
|
33
|
+
/**
|
|
34
|
+
* Role names to pass to `queryFilter.buildWhere()`.
|
|
35
|
+
*/
|
|
36
|
+
queryFilterRoles: z.array(z.string()).optional(),
|
|
37
|
+
/**
|
|
38
|
+
* Global role names that bypass the query filter entirely.
|
|
39
|
+
*/
|
|
40
|
+
queryFilterBypassRoles: z.array(z.string()).optional(),
|
|
27
41
|
});
|
|
28
42
|
export const pothosPrismaFindQueryGenerator = createGenerator({
|
|
29
43
|
name: 'pothos/pothos-prisma-find-query',
|
|
30
44
|
generatorFileUrl: import.meta.url,
|
|
31
45
|
descriptorSchema,
|
|
32
46
|
scopes: [pothosFieldScope],
|
|
33
|
-
buildTasks: ({ modelName, order, hasPrimaryKeyInputType }) => ({
|
|
47
|
+
buildTasks: ({ modelName, order, hasPrimaryKeyInputType, queryFilterRef, queryFilterRoles, queryFilterBypassRoles, }) => ({
|
|
34
48
|
main: createGeneratorTask({
|
|
35
49
|
dependencies: {
|
|
36
50
|
prismaOutput: prismaOutputProvider,
|
|
@@ -41,11 +55,14 @@ export const pothosPrismaFindQueryGenerator = createGenerator({
|
|
|
41
55
|
.optionalReference(hasPrimaryKeyInputType
|
|
42
56
|
? getPothosPrismaPrimaryKeyTypeOutputName(modelName)
|
|
43
57
|
: undefined),
|
|
58
|
+
queryFilter: prismaModelQueryFilterProvider
|
|
59
|
+
.dependency()
|
|
60
|
+
.optionalReference(queryFilterRef),
|
|
44
61
|
},
|
|
45
62
|
exports: {
|
|
46
63
|
pothosField: pothosFieldProvider.export(pothosFieldScope),
|
|
47
64
|
},
|
|
48
|
-
run({ prismaOutput, pothosSchemaBaseTypes, pothosTypesFile, pothosPrimaryKeyInputType, }) {
|
|
65
|
+
run({ prismaOutput, pothosSchemaBaseTypes, pothosTypesFile, pothosPrimaryKeyInputType, queryFilter, }) {
|
|
49
66
|
const modelOutput = prismaOutput.getPrismaModel(modelName);
|
|
50
67
|
const { idFields } = modelOutput;
|
|
51
68
|
if (!idFields) {
|
|
@@ -73,20 +90,45 @@ export const pothosPrismaFindQueryGenerator = createGenerator({
|
|
|
73
90
|
build: () => {
|
|
74
91
|
const pothosArgs = writePothosArgsFromDtoFields([primaryKeyDefinition], writerOptions);
|
|
75
92
|
const primaryKeyFieldName = getModelIdFieldName(modelOutput);
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
93
|
+
let resolveFunction;
|
|
94
|
+
if (queryFilter &&
|
|
95
|
+
queryFilterRoles &&
|
|
96
|
+
queryFilterRoles.length > 0) {
|
|
97
|
+
const rolesArray = queryFilterRoles
|
|
98
|
+
.map((r) => `'${r}'`)
|
|
99
|
+
.join(', ');
|
|
100
|
+
const queryFilterFragment = queryFilter.getQueryFilterFragment();
|
|
101
|
+
const idPart = primaryKeyFieldName === primaryKeyDefinition.name
|
|
102
|
+
? primaryKeyFieldName
|
|
103
|
+
: `${primaryKeyFieldName}: ${primaryKeyDefinition.name}`;
|
|
104
|
+
const bypassRolesArg = queryFilterBypassRoles && queryFilterBypassRoles.length > 0
|
|
105
|
+
? `, { bypassRoles: [${queryFilterBypassRoles.map((r) => quot(r)).join(', ')}] }`
|
|
106
|
+
: '';
|
|
107
|
+
resolveFunction = TsCodeUtils.formatFragment(`async (query, _root, ARG_INPUT, ctx) => MODEL.findUniqueOrThrow({...query,where: { ID_PART, ...QUERY_FILTER.buildWhere(ctx, [ROLES]BYPASS_ROLES) }})`, {
|
|
108
|
+
ARG_INPUT: `{ ${primaryKeyDefinition.name} }`,
|
|
109
|
+
MODEL: prismaOutput.getPrismaModelFragment(modelName),
|
|
110
|
+
ID_PART: idPart,
|
|
111
|
+
QUERY_FILTER: queryFilterFragment,
|
|
112
|
+
ROLES: rolesArray,
|
|
113
|
+
BYPASS_ROLES: bypassRolesArg,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
resolveFunction = TsCodeUtils.formatFragment(`async (query, root, ARG_INPUT) => MODEL.findUniqueOrThrow({...query,where: WHERE_CLAUSE})`, {
|
|
118
|
+
ARG_INPUT: `{ ${primaryKeyDefinition.name} }`,
|
|
119
|
+
MODEL: prismaOutput.getPrismaModelFragment(modelName),
|
|
120
|
+
WHERE_CLAUSE: primaryKeyFieldName === primaryKeyDefinition.name
|
|
121
|
+
? `{ ${primaryKeyFieldName} }`
|
|
122
|
+
: `{ ${primaryKeyFieldName}: ${primaryKeyDefinition.name} }`,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
83
125
|
const options = {
|
|
84
126
|
type: quot(modelName),
|
|
85
127
|
...sortObjectKeys(customFields.value()),
|
|
86
128
|
args: pothosArgs,
|
|
87
129
|
resolve: resolveFunction,
|
|
88
130
|
};
|
|
89
|
-
const block = TsCodeUtils.formatFragment(`BUILDER.queryField(QUERY_NAME, (t) =>
|
|
131
|
+
const block = TsCodeUtils.formatFragment(`BUILDER.queryField(QUERY_NAME, (t) =>
|
|
90
132
|
t.prismaField(OPTIONS)
|
|
91
133
|
);`, {
|
|
92
134
|
QUERY_EXPORT: `${lowerFirstModelName}Query`,
|
package/dist/generators/pothos/pothos-prisma-find-query/pothos-prisma-find-query.generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pothos-prisma-find-query.generator.js","sourceRoot":"","sources":["../../../../src/generators/pothos/pothos-prisma-find-query/pothos-prisma-find-query.generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,iEAAiE,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAE5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,uCAAuC,EAAE,MAAM,uCAAuC,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAEnE,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B;;OAEG;IACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB;;OAEG;IACH,sBAAsB,EAAE,CAAC,CAAC,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"pothos-prisma-find-query.generator.js","sourceRoot":"","sources":["../../../../src/generators/pothos/pothos-prisma-find-query/pothos-prisma-find-query.generator.ts"],"names":[],"mappings":"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"}
|
package/dist/generators/pothos/pothos-prisma-list-query/pothos-prisma-list-query.generator.d.ts
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
export declare const pothosPrismaListQueryGenerator: import("@baseplate-dev/sync").GeneratorBundleCreator<{
|
|
2
2
|
modelName: string;
|
|
3
3
|
order: number;
|
|
4
|
+
queryFilterRef?: string | undefined;
|
|
5
|
+
queryFilterRoles?: string[] | undefined;
|
|
6
|
+
queryFilterBypassRoles?: string[] | undefined;
|
|
4
7
|
}, {
|
|
5
8
|
main: import("@baseplate-dev/sync").GeneratorTask<{
|
|
6
9
|
pothosField: import("@baseplate-dev/sync").ProviderExport<import("#src/generators/pothos/_providers/pothos-field.js").PothosFieldProvider>;
|
|
7
10
|
}, {
|
|
8
11
|
prismaOutput: import("@baseplate-dev/sync").ProviderType<import("#src/generators/prisma/prisma/index.js").PrismaOutputProvider>;
|
|
9
12
|
pothosTypesFile: import("@baseplate-dev/sync").ProviderType<import("../pothos-types-file/pothos-types-file.generator.js").PothosTypesFileProvider>;
|
|
13
|
+
queryFilter: import("@baseplate-dev/sync").ProviderDependency<import("#src/generators/prisma/prisma-model-query-filter/index.js").PrismaModelQueryFilterProvider | undefined>;
|
|
10
14
|
}, any>;
|
|
11
15
|
}>;
|
|
12
16
|
//# sourceMappingURL=pothos-prisma-list-query.generator.d.ts.map
|
package/dist/generators/pothos/pothos-prisma-list-query/pothos-prisma-list-query.generator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pothos-prisma-list-query.generator.d.ts","sourceRoot":"","sources":["../../../../src/generators/pothos/pothos-prisma-list-query/pothos-prisma-list-query.generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pothos-prisma-list-query.generator.d.ts","sourceRoot":"","sources":["../../../../src/generators/pothos/pothos-prisma-list-query/pothos-prisma-list-query.generator.ts"],"names":[],"mappings":"AA2CA,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;EAmGzC,CAAC"}
|
package/dist/generators/pothos/pothos-prisma-list-query/pothos-prisma-list-query.generator.js
CHANGED
|
@@ -4,6 +4,7 @@ import { quot, sortObjectKeys } from '@baseplate-dev/utils';
|
|
|
4
4
|
import { pluralize } from 'inflection';
|
|
5
5
|
import { z } from 'zod';
|
|
6
6
|
import { pothosFieldProvider } from '#src/generators/pothos/_providers/pothos-field.js';
|
|
7
|
+
import { prismaModelQueryFilterProvider } from '#src/generators/prisma/prisma-model-query-filter/index.js';
|
|
7
8
|
import { prismaOutputProvider } from '#src/generators/prisma/prisma/index.js';
|
|
8
9
|
import { lowerCaseFirst } from '#src/utils/case.js';
|
|
9
10
|
import { pothosFieldScope } from '../_providers/scopes.js';
|
|
@@ -17,22 +18,37 @@ const descriptorSchema = z.object({
|
|
|
17
18
|
* The order of the type in the types file.
|
|
18
19
|
*/
|
|
19
20
|
order: z.number(),
|
|
21
|
+
/**
|
|
22
|
+
* Model name key to look up the query filter provider.
|
|
23
|
+
*/
|
|
24
|
+
queryFilterRef: z.string().optional(),
|
|
25
|
+
/**
|
|
26
|
+
* Role names to pass to `queryFilter.buildWhere()`.
|
|
27
|
+
*/
|
|
28
|
+
queryFilterRoles: z.array(z.string()).optional(),
|
|
29
|
+
/**
|
|
30
|
+
* Global role names that bypass the query filter entirely.
|
|
31
|
+
*/
|
|
32
|
+
queryFilterBypassRoles: z.array(z.string()).optional(),
|
|
20
33
|
});
|
|
21
34
|
export const pothosPrismaListQueryGenerator = createGenerator({
|
|
22
35
|
name: 'pothos/pothos-prisma-list-query',
|
|
23
36
|
generatorFileUrl: import.meta.url,
|
|
24
37
|
descriptorSchema,
|
|
25
38
|
scopes: [pothosFieldScope],
|
|
26
|
-
buildTasks: ({ modelName, order }) => ({
|
|
39
|
+
buildTasks: ({ modelName, order, queryFilterRef, queryFilterRoles, queryFilterBypassRoles, }) => ({
|
|
27
40
|
main: createGeneratorTask({
|
|
28
41
|
dependencies: {
|
|
29
42
|
prismaOutput: prismaOutputProvider,
|
|
30
43
|
pothosTypesFile: pothosTypesFileProvider,
|
|
44
|
+
queryFilter: prismaModelQueryFilterProvider
|
|
45
|
+
.dependency()
|
|
46
|
+
.optionalReference(queryFilterRef),
|
|
31
47
|
},
|
|
32
48
|
exports: {
|
|
33
49
|
pothosField: pothosFieldProvider.export(pothosFieldScope),
|
|
34
50
|
},
|
|
35
|
-
run({ prismaOutput, pothosTypesFile }) {
|
|
51
|
+
run({ prismaOutput, pothosTypesFile, queryFilter }) {
|
|
36
52
|
const modelOutput = prismaOutput.getPrismaModel(modelName);
|
|
37
53
|
const { idFields } = modelOutput;
|
|
38
54
|
if (!idFields) {
|
|
@@ -50,9 +66,29 @@ export const pothosPrismaListQueryGenerator = createGenerator({
|
|
|
50
66
|
},
|
|
51
67
|
build: () => {
|
|
52
68
|
const prismaModelFragment = prismaOutput.getPrismaModelFragment(modelName);
|
|
53
|
-
const
|
|
69
|
+
const zFragment = TsCodeUtils.importFragment('z', 'zod');
|
|
70
|
+
let resolveFunction;
|
|
71
|
+
if (queryFilter &&
|
|
72
|
+
queryFilterRoles &&
|
|
73
|
+
queryFilterRoles.length > 0) {
|
|
74
|
+
const rolesArray = queryFilterRoles
|
|
75
|
+
.map((r) => `'${r}'`)
|
|
76
|
+
.join(', ');
|
|
77
|
+
const queryFilterFragment = queryFilter.getQueryFilterFragment();
|
|
78
|
+
const bypassRolesArg = queryFilterBypassRoles && queryFilterBypassRoles.length > 0
|
|
79
|
+
? `, { bypassRoles: [${queryFilterBypassRoles.map((r) => quot(r)).join(', ')}] }`
|
|
80
|
+
: '';
|
|
81
|
+
resolveFunction = tsTemplate `async (query, _root, { skip, take }, ctx) => ${prismaModelFragment}.findMany({ ...query, where: { ...${queryFilterFragment}.buildWhere(ctx, [${rolesArray}]${bypassRolesArg}) }, skip: skip ?? undefined, take: take ?? undefined })`;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
resolveFunction = tsTemplate `async (query, _root, { skip, take }) => ${prismaModelFragment}.findMany({ ...query, skip: skip ?? undefined, take: take ?? undefined })`;
|
|
85
|
+
}
|
|
54
86
|
const options = {
|
|
55
87
|
type: `[${quot(modelName)}]`,
|
|
88
|
+
args: tsTemplate `{
|
|
89
|
+
skip: t.arg.int({ validate: ${zFragment}.int().min(0) }),
|
|
90
|
+
take: t.arg.int({ validate: ${zFragment}.int().min(0) }),
|
|
91
|
+
}`,
|
|
56
92
|
...sortObjectKeys(customFields.value()),
|
|
57
93
|
resolve: resolveFunction,
|
|
58
94
|
};
|
package/dist/generators/pothos/pothos-prisma-list-query/pothos-prisma-list-query.generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pothos-prisma-list-query.generator.js","sourceRoot":"","sources":["../../../../src/generators/pothos/pothos-prisma-list-query/pothos-prisma-list-query.generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AACxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAExE,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B;;OAEG;IACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"pothos-prisma-list-query.generator.js","sourceRoot":"","sources":["../../../../src/generators/pothos/pothos-prisma-list-query/pothos-prisma-list-query.generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AACxF,OAAO,EAAE,8BAA8B,EAAE,MAAM,2DAA2D,CAAC;AAC3G,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAExE,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B;;OAEG;IACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB;;OAEG;IACH,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC;;OAEG;IACH,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAChD;;OAEG;IACH,sBAAsB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACvD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,8BAA8B,GAAG,eAAe,CAAC;IAC5D,IAAI,EAAE,iCAAiC;IACvC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;IACjC,gBAAgB;IAChB,MAAM,EAAE,CAAC,gBAAgB,CAAC;IAC1B,UAAU,EAAE,CAAC,EACX,SAAS,EACT,KAAK,EACL,cAAc,EACd,gBAAgB,EAChB,sBAAsB,GACvB,EAAE,EAAE,CAAC,CAAC;QACL,IAAI,EAAE,mBAAmB,CAAC;YACxB,YAAY,EAAE;gBACZ,YAAY,EAAE,oBAAoB;gBAClC,eAAe,EAAE,uBAAuB;gBACxC,WAAW,EAAE,8BAA8B;qBACxC,UAAU,EAAE;qBACZ,iBAAiB,CAAC,cAAc,CAAC;aACrC;YACD,OAAO,EAAE;gBACP,WAAW,EAAE,mBAAmB,CAAC,MAAM,CAAC,gBAAgB,CAAC;aAC1D;YACD,GAAG,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE;gBAChD,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBAE3D,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC;gBAEjC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,IAAI,KAAK,CAAC,SAAS,SAAS,4BAA4B,CAAC,CAAC;gBAClE,CAAC;gBAED,MAAM,SAAS,GAAG,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;gBAEvD,MAAM,YAAY,GAAG,yBAAyB,CAE5C,EAAE,CAAC,CAAC;gBAEN,OAAO;oBACL,SAAS,EAAE;wBACT,WAAW,EAAE;4BACX,eAAe,CAAC,KAAK;gCACnB,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;4BAC5C,CAAC;yBACF;qBACF;oBACD,KAAK,EAAE,GAAG,EAAE;wBACV,MAAM,mBAAmB,GACvB,YAAY,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;wBAEjD,MAAM,SAAS,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBAEzD,IAAI,eAA+B,CAAC;wBAEpC,IACE,WAAW;4BACX,gBAAgB;4BAChB,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAC3B,CAAC;4BACD,MAAM,UAAU,GAAG,gBAAgB;iCAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;iCACpB,IAAI,CAAC,IAAI,CAAC,CAAC;4BACd,MAAM,mBAAmB,GAAG,WAAW,CAAC,sBAAsB,EAAE,CAAC;4BAEjE,MAAM,cAAc,GAClB,sBAAsB,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC;gCACzD,CAAC,CAAC,qBAAqB,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;gCACjF,CAAC,CAAC,EAAE,CAAC;4BAET,eAAe,GAAG,UAAU,CAAA,gDAAgD,mBAAmB,qCAAqC,mBAAmB,qBAAqB,UAAU,IAAI,cAAc,0DAA0D,CAAC;wBACrQ,CAAC;6BAAM,CAAC;4BACN,eAAe,GAAG,UAAU,CAAA,2CAA2C,mBAAmB,2EAA2E,CAAC;wBACxK,CAAC;wBAED,MAAM,OAAO,GAAG;4BACd,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG;4BAC5B,IAAI,EAAE,UAAU,CAAA;8CACgB,SAAS;8CACT,SAAS;gBACvC;4BACF,GAAG,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;4BACvC,OAAO,EAAE,eAAe;yBACzB,CAAC;wBAEF,MAAM,KAAK,GAAG,UAAU,CAAA,GAAG,eAAe,CAAC,kBAAkB,EAAE;gBAC3D,IAAI,CAAC,SAAS,CAAC;qCACM,WAAW,CAAC,sBAAsB,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;cACzF,CAAC;wBAEH,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC;4BAClC,IAAI,EAAE,GAAG,SAAS,OAAO;4BACzB,QAAQ,EAAE,KAAK;4BACf,KAAK;yBACN,CAAC,CAAC;oBACL,CAAC;iBACF,CAAC;YACJ,CAAC;SACF,CAAC;KACH,CAAC;CACH,CAAC,CAAC"}
|
|
@@ -6,7 +6,11 @@ export declare const pothosPrismaObjectProvider: import("@baseplate-dev/sync").P
|
|
|
6
6
|
export declare function createPothosPrismaObjectTypeOutputName(modelName: string): string;
|
|
7
7
|
export declare const pothosPrismaObjectGenerator: import("@baseplate-dev/sync").GeneratorBundleCreator<{
|
|
8
8
|
modelName: string;
|
|
9
|
-
exposedFields:
|
|
9
|
+
exposedFields: {
|
|
10
|
+
name: string;
|
|
11
|
+
globalRoles?: string[] | undefined;
|
|
12
|
+
instanceRoles?: string[] | undefined;
|
|
13
|
+
}[];
|
|
10
14
|
order: number;
|
|
11
15
|
}, {
|
|
12
16
|
main: import("@baseplate-dev/sync").GeneratorTask<{
|
|
@@ -16,6 +20,8 @@ export declare const pothosPrismaObjectGenerator: import("@baseplate-dev/sync").
|
|
|
16
20
|
prismaOutput: import("@baseplate-dev/sync").ProviderType<import("#src/generators/prisma/prisma/index.js").PrismaOutputProvider>;
|
|
17
21
|
pothosTypeFile: import("@baseplate-dev/sync").ProviderType<import("../pothos-types-file/pothos-types-file.generator.js").PothosTypesFileProvider>;
|
|
18
22
|
pothosSchemaBaseTypes: import("@baseplate-dev/sync").ProviderType<import("../pothos/pothos.generator.js").PothosSchemaBaseTypesProvider>;
|
|
23
|
+
pothosAuth: import("@baseplate-dev/sync").ProviderDependency<import("../pothos-auth/pothos-auth.generator.js").PothosAuthProvider | undefined>;
|
|
24
|
+
modelAuthorizer: import("@baseplate-dev/sync").ProviderDependency<import("#src/generators/prisma/prisma-model-authorizer/index.js").PrismaModelAuthorizerProvider | undefined>;
|
|
19
25
|
}, any>;
|
|
20
26
|
}>;
|
|
21
27
|
//# sourceMappingURL=pothos-prisma-object.generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pothos-prisma-object.generator.d.ts","sourceRoot":"","sources":["../../../../src/generators/pothos/pothos-prisma-object/pothos-prisma-object.generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"pothos-prisma-object.generator.d.ts","sourceRoot":"","sources":["../../../../src/generators/pothos/pothos-prisma-object/pothos-prisma-object.generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAsDrE,MAAM,WAAW,0BAA0B;IACzC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,KAAK,IAAI,CAAC;CACpE;AAED,eAAO,MAAM,0BAA0B,wEACiC,CAAC;AAEzE,wBAAgB,sCAAsC,CACpD,SAAS,EAAE,MAAM,GAChB,MAAM,CAER;AAED,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;EA0LtC,CAAC"}
|
|
@@ -1,23 +1,30 @@
|
|
|
1
|
-
import { packageScope, TsCodeUtils } from '@baseplate-dev/core-generators';
|
|
1
|
+
import { packageScope, TsCodeUtils, tsTemplate, } from '@baseplate-dev/core-generators';
|
|
2
2
|
import { createGenerator, createGeneratorTask, createNonOverwriteableMap, createProviderType, } from '@baseplate-dev/sync';
|
|
3
3
|
import { quot } from '@baseplate-dev/utils';
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
+
import { prismaModelAuthorizerProvider } from '#src/generators/prisma/prisma-model-authorizer/index.js';
|
|
5
6
|
import { prismaOutputProvider } from '#src/generators/prisma/prisma/index.js';
|
|
6
7
|
import { prismaToServiceOutputDto } from '#src/types/service-output.js';
|
|
7
8
|
import { lowerCaseFirst } from '#src/utils/case.js';
|
|
8
9
|
import { createPothosTypeReference, writePothosExposeFieldFromDtoScalarField, } from '#src/writers/pothos/index.js';
|
|
9
10
|
import { pothosFieldScope, pothosTypeOutputProvider, } from '../_providers/index.js';
|
|
11
|
+
import { pothosAuthProvider } from '../pothos-auth/index.js';
|
|
10
12
|
import { pothosTypesFileProvider } from '../pothos-types-file/index.js';
|
|
11
13
|
import { pothosSchemaBaseTypesProvider } from '../pothos/index.js';
|
|
14
|
+
const exposedFieldSchema = z.object({
|
|
15
|
+
name: z.string().min(1),
|
|
16
|
+
globalRoles: z.array(z.string().min(1)).default([]),
|
|
17
|
+
instanceRoles: z.array(z.string().min(1)).default([]),
|
|
18
|
+
});
|
|
12
19
|
const descriptorSchema = z.object({
|
|
13
20
|
/**
|
|
14
21
|
* The name of the model.
|
|
15
22
|
*/
|
|
16
23
|
modelName: z.string().min(1),
|
|
17
24
|
/**
|
|
18
|
-
* The fields to expose.
|
|
25
|
+
* The fields to expose, with optional per-field auth config.
|
|
19
26
|
*/
|
|
20
|
-
exposedFields: z.array(
|
|
27
|
+
exposedFields: z.array(exposedFieldSchema),
|
|
21
28
|
/**
|
|
22
29
|
* The order of the type in the types file.
|
|
23
30
|
*/
|
|
@@ -38,15 +45,49 @@ export const pothosPrismaObjectGenerator = createGenerator({
|
|
|
38
45
|
prismaOutput: prismaOutputProvider,
|
|
39
46
|
pothosTypeFile: pothosTypesFileProvider,
|
|
40
47
|
pothosSchemaBaseTypes: pothosSchemaBaseTypesProvider,
|
|
48
|
+
pothosAuth: pothosAuthProvider.dependency().optional(),
|
|
49
|
+
modelAuthorizer: prismaModelAuthorizerProvider
|
|
50
|
+
.dependency()
|
|
51
|
+
.optionalReference(modelName),
|
|
41
52
|
},
|
|
42
53
|
exports: {
|
|
43
54
|
pothosPrismaObject: pothosPrismaObjectProvider.export(pothosFieldScope),
|
|
44
55
|
pothosTypeOutput: pothosTypeOutputProvider.export(packageScope, createPothosPrismaObjectTypeOutputName(modelName)),
|
|
45
56
|
},
|
|
46
|
-
run({ prismaOutput, pothosTypeFile, pothosSchemaBaseTypes }) {
|
|
57
|
+
run({ prismaOutput, pothosTypeFile, pothosSchemaBaseTypes, pothosAuth, modelAuthorizer, }) {
|
|
47
58
|
const model = prismaOutput.getPrismaModel(modelName);
|
|
48
59
|
const variableName = `${lowerCaseFirst(model.name)}ObjectType`;
|
|
49
60
|
const customFields = createNonOverwriteableMap({});
|
|
61
|
+
// Build lookup: fieldName → auth config
|
|
62
|
+
const fieldAuthMap = new Map(exposedFields
|
|
63
|
+
.filter((f) => f.globalRoles.length > 0 || f.instanceRoles.length > 0)
|
|
64
|
+
.map((f) => [
|
|
65
|
+
f.name,
|
|
66
|
+
{ globalRoles: f.globalRoles, instanceRoles: f.instanceRoles },
|
|
67
|
+
]));
|
|
68
|
+
/**
|
|
69
|
+
* Build an authorize TsCodeFragment for a field, if it has auth config.
|
|
70
|
+
*/
|
|
71
|
+
function buildAuthorizeFragment(fieldName) {
|
|
72
|
+
const fieldAuth = fieldAuthMap.get(fieldName);
|
|
73
|
+
if (!fieldAuth || !pothosAuth) {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
const instanceRoleFragments = fieldAuth.instanceRoles.map((roleName) => {
|
|
77
|
+
if (!modelAuthorizer) {
|
|
78
|
+
throw new Error(`Field '${fieldName}' on model '${modelName}' references instance role '${roleName}' but no authorizer is configured for this model.`);
|
|
79
|
+
}
|
|
80
|
+
return modelAuthorizer.getRoleFragment(roleName);
|
|
81
|
+
});
|
|
82
|
+
if (fieldAuth.globalRoles.length === 0 &&
|
|
83
|
+
instanceRoleFragments.length === 0) {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
return pothosAuth.formatMixedAuthorizeConfig({
|
|
87
|
+
globalRoles: fieldAuth.globalRoles,
|
|
88
|
+
instanceRoleFragments,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
50
91
|
return {
|
|
51
92
|
providers: {
|
|
52
93
|
pothosPrismaObject: {
|
|
@@ -64,23 +105,42 @@ export const pothosPrismaObjectGenerator = createGenerator({
|
|
|
64
105
|
},
|
|
65
106
|
build: () => {
|
|
66
107
|
const outputDto = prismaToServiceOutputDto(model, (enumName) => prismaOutput.getServiceEnum(enumName));
|
|
67
|
-
const
|
|
108
|
+
const exposedFieldNames = exposedFields.map((f) => f.name);
|
|
109
|
+
const missingField = exposedFieldNames.find((exposedFieldName) => !outputDto.fields.some((field) => field.name === exposedFieldName));
|
|
68
110
|
if (missingField) {
|
|
69
111
|
throw new Error(`Field ${missingField} not found in model ${model.name}`);
|
|
70
112
|
}
|
|
71
113
|
const fieldDefinitions = outputDto.fields
|
|
72
|
-
.filter((field) =>
|
|
73
|
-
.map((field) =>
|
|
74
|
-
|
|
75
|
-
fragment
|
|
76
|
-
|
|
114
|
+
.filter((field) => exposedFieldNames.includes(field.name))
|
|
115
|
+
.map((field) => {
|
|
116
|
+
const authorize = buildAuthorizeFragment(field.name);
|
|
117
|
+
let fragment;
|
|
118
|
+
if (field.type === 'scalar') {
|
|
119
|
+
fragment = writePothosExposeFieldFromDtoScalarField(field, {
|
|
77
120
|
schemaBuilder: pothosTypeFile.getBuilderFragment(),
|
|
78
121
|
fieldBuilder: 't',
|
|
79
122
|
pothosSchemaBaseTypes,
|
|
80
123
|
typeReferences: [],
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
124
|
+
authorize,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
else if (authorize || field.isNullable) {
|
|
128
|
+
// Relation with options (nullable and/or authorize)
|
|
129
|
+
const options = {};
|
|
130
|
+
if (field.isNullable) {
|
|
131
|
+
options.nullable = 'true';
|
|
132
|
+
}
|
|
133
|
+
if (authorize) {
|
|
134
|
+
options.authorize = authorize;
|
|
135
|
+
}
|
|
136
|
+
fragment = tsTemplate `t.relation(${quot(field.name)}, ${TsCodeUtils.mergeFragmentsAsObject(options)})`;
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
// Simple relation with no options
|
|
140
|
+
fragment = `t.relation('${field.name}')`;
|
|
141
|
+
}
|
|
142
|
+
return { name: field.name, fragment };
|
|
143
|
+
});
|
|
84
144
|
const objectTypeBlock = TsCodeUtils.formatFragment(`export const VARIABLE_NAME = BUILDER.prismaObject(MODEL_NAME, {
|
|
85
145
|
fields: (t) => (FIELDS)
|
|
86
146
|
});`, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pothos-prisma-object.generator.js","sourceRoot":"","sources":["../../../../src/generators/pothos/pothos-prisma-object/pothos-prisma-object.generator.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"pothos-prisma-object.generator.js","sourceRoot":"","sources":["../../../../src/generators/pothos/pothos-prisma-object/pothos-prisma-object.generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { TsCodeFragment } from '@baseplate-dev/core-generators';
|
|
2
|
+
interface ModelAuthorizerLike {
|
|
3
|
+
getRoleFragment(roleName: string): TsCodeFragment;
|
|
4
|
+
}
|
|
5
|
+
interface GenerateAuthorizeFragmentOptions {
|
|
6
|
+
modelName: string;
|
|
7
|
+
methodType: string;
|
|
8
|
+
globalRoles?: string[];
|
|
9
|
+
instanceRoles?: string[];
|
|
10
|
+
modelAuthorizer: ModelAuthorizerLike | undefined;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Builds a `TsCodeFragment` for the `authorize: [...]` property used in
|
|
14
|
+
* `composeCreate`, `composeUpdate`, and `commitDelete` calls.
|
|
15
|
+
*
|
|
16
|
+
* Returns an empty string when no roles are configured.
|
|
17
|
+
*/
|
|
18
|
+
export declare function generateAuthorizeFragment({ modelName, methodType, globalRoles, instanceRoles, modelAuthorizer, }: GenerateAuthorizeFragmentOptions): string | TsCodeFragment;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=generate-authorize-fragment.d.ts.map
|
package/dist/generators/prisma/_shared/build-data-helpers/generate-authorize-fragment.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-authorize-fragment.d.ts","sourceRoot":"","sources":["../../../../../src/generators/prisma/_shared/build-data-helpers/generate-authorize-fragment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAKrE,UAAU,mBAAmB;IAC3B,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC;CACnD;AAED,UAAU,gCAAgC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAClD;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,SAAS,EACT,UAAU,EACV,WAAW,EACX,aAAa,EACb,eAAe,GAChB,EAAE,gCAAgC,GAAG,MAAM,GAAG,cAAc,CA2B5D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { TsCodeUtils } from '@baseplate-dev/core-generators';
|
|
2
|
+
import { quot } from '@baseplate-dev/utils';
|
|
3
|
+
/**
|
|
4
|
+
* Builds a `TsCodeFragment` for the `authorize: [...]` property used in
|
|
5
|
+
* `composeCreate`, `composeUpdate`, and `commitDelete` calls.
|
|
6
|
+
*
|
|
7
|
+
* Returns an empty string when no roles are configured.
|
|
8
|
+
*/
|
|
9
|
+
export function generateAuthorizeFragment({ modelName, methodType, globalRoles, instanceRoles, modelAuthorizer, }) {
|
|
10
|
+
const hasGlobalRoles = globalRoles != null && globalRoles.length > 0;
|
|
11
|
+
const hasInstanceRoles = instanceRoles != null && instanceRoles.length > 0;
|
|
12
|
+
if (!hasGlobalRoles && !hasInstanceRoles) {
|
|
13
|
+
return '';
|
|
14
|
+
}
|
|
15
|
+
const globalRoleItems = (globalRoles ?? []).map((r) => quot(r));
|
|
16
|
+
const instanceRoleFragments = (instanceRoles ?? []).map((roleName) => {
|
|
17
|
+
if (!modelAuthorizer) {
|
|
18
|
+
throw new Error(`${methodType} method on model '${modelName}' references instance role '${roleName}' but no authorizer is configured for this model.`);
|
|
19
|
+
}
|
|
20
|
+
return modelAuthorizer.getRoleFragment(roleName);
|
|
21
|
+
});
|
|
22
|
+
const allItems = [
|
|
23
|
+
...globalRoleItems,
|
|
24
|
+
...instanceRoleFragments.map((f) => f.contents),
|
|
25
|
+
];
|
|
26
|
+
return TsCodeUtils.frag(`\n authorize: [${allItems.join(', ')}],`, instanceRoleFragments.flatMap((f) => f.imports ?? []));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=generate-authorize-fragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-authorize-fragment.js","sourceRoot":"","sources":["../../../../../src/generators/prisma/_shared/build-data-helpers/generate-authorize-fragment.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAc5C;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,EACxC,SAAS,EACT,UAAU,EACV,WAAW,EACX,aAAa,EACb,eAAe,GACkB;IACjC,MAAM,cAAc,GAAG,WAAW,IAAI,IAAI,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IACrE,MAAM,gBAAgB,GAAG,aAAa,IAAI,IAAI,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAE3E,IAAI,CAAC,cAAc,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACzC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,eAAe,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,qBAAqB,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QACnE,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,GAAG,UAAU,qBAAqB,SAAS,+BAA+B,QAAQ,mDAAmD,CACtI,CAAC;QACJ,CAAC;QACD,OAAO,eAAe,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG;QACf,GAAG,eAAe;QAClB,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;KAChD,CAAC;IAEF,OAAO,WAAW,CAAC,IAAI,CACrB,mCAAmC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAC1D,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CACtD,CAAC;AACJ,CAAC"}
|