@constructive-io/graphql-server 2.19.1 → 2.19.3
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/codegen/orm/index.d.ts +7 -603
- package/codegen/orm/index.js +4 -127
- package/codegen/orm/input-types.d.ts +14682 -7790
- package/codegen/orm/input-types.js +0 -5
- package/codegen/orm/models/api.d.ts +6 -6
- package/codegen/orm/models/api.js +3 -4
- package/codegen/orm/models/domain.d.ts +6 -6
- package/codegen/orm/models/domain.js +3 -4
- package/codegen/orm/models/index.d.ts +1 -58
- package/codegen/orm/models/index.js +3 -118
- package/codegen/orm/mutation/index.d.ts +1 -525
- package/codegen/orm/mutation/index.js +2 -591
- package/codegen/orm/query/index.d.ts +3 -257
- package/codegen/orm/query/index.js +8 -274
- package/codegen/orm/query-builder.d.ts +2 -1
- package/codegen/orm/query-builder.js +376 -129
- package/codegen/orm/select-types.d.ts +33 -0
- package/esm/codegen/orm/index.js +4 -127
- package/esm/codegen/orm/input-types.js +0 -5
- package/esm/codegen/orm/models/api.js +3 -4
- package/esm/codegen/orm/models/domain.js +3 -4
- package/esm/codegen/orm/models/index.js +1 -58
- package/esm/codegen/orm/mutation/index.js +2 -591
- package/esm/codegen/orm/query/index.js +8 -274
- package/esm/codegen/orm/query-builder.js +343 -129
- package/esm/middleware/api.js +145 -173
- package/esm/middleware/gql.js +72 -71
- package/middleware/api.d.ts +16 -3
- package/middleware/api.js +148 -173
- package/middleware/gql.d.ts +174 -24
- package/middleware/gql.js +76 -76
- package/middleware/types.d.ts +3 -19
- package/package.json +7 -4
- package/types.d.ts +17 -44
- package/codegen/orm/models/apiExtension.d.ts +0 -42
- package/codegen/orm/models/apiExtension.js +0 -77
- package/codegen/orm/models/apiModule.d.ts +0 -42
- package/codegen/orm/models/apiModule.js +0 -77
- package/codegen/orm/models/apiSchema.d.ts +0 -42
- package/codegen/orm/models/apiSchema.js +0 -77
- package/codegen/orm/models/app.d.ts +0 -42
- package/codegen/orm/models/app.js +0 -77
- package/codegen/orm/models/checkConstraint.d.ts +0 -42
- package/codegen/orm/models/checkConstraint.js +0 -77
- package/codegen/orm/models/connectedAccountsModule.d.ts +0 -42
- package/codegen/orm/models/connectedAccountsModule.js +0 -77
- package/codegen/orm/models/cryptoAddressesModule.d.ts +0 -42
- package/codegen/orm/models/cryptoAddressesModule.js +0 -77
- package/codegen/orm/models/cryptoAuthModule.d.ts +0 -42
- package/codegen/orm/models/cryptoAuthModule.js +0 -77
- package/codegen/orm/models/database.d.ts +0 -42
- package/codegen/orm/models/database.js +0 -77
- package/codegen/orm/models/databaseExtension.d.ts +0 -42
- package/codegen/orm/models/databaseExtension.js +0 -77
- package/codegen/orm/models/databaseProvision.d.ts +0 -42
- package/codegen/orm/models/databaseProvision.js +0 -77
- package/codegen/orm/models/defaultIdsModule.d.ts +0 -42
- package/codegen/orm/models/defaultIdsModule.js +0 -77
- package/codegen/orm/models/denormalizedTableField.d.ts +0 -42
- package/codegen/orm/models/denormalizedTableField.js +0 -77
- package/codegen/orm/models/emailsModule.d.ts +0 -42
- package/codegen/orm/models/emailsModule.js +0 -77
- package/codegen/orm/models/encryptedSecretsModule.d.ts +0 -42
- package/codegen/orm/models/encryptedSecretsModule.js +0 -77
- package/codegen/orm/models/extension.d.ts +0 -42
- package/codegen/orm/models/extension.js +0 -77
- package/codegen/orm/models/field.d.ts +0 -42
- package/codegen/orm/models/field.js +0 -77
- package/codegen/orm/models/fieldModule.d.ts +0 -42
- package/codegen/orm/models/fieldModule.js +0 -77
- package/codegen/orm/models/foreignKeyConstraint.d.ts +0 -42
- package/codegen/orm/models/foreignKeyConstraint.js +0 -77
- package/codegen/orm/models/fullTextSearch.d.ts +0 -42
- package/codegen/orm/models/fullTextSearch.js +0 -77
- package/codegen/orm/models/hierarchyModule.d.ts +0 -42
- package/codegen/orm/models/hierarchyModule.js +0 -77
- package/codegen/orm/models/indexModel.d.ts +0 -42
- package/codegen/orm/models/indexModel.js +0 -77
- package/codegen/orm/models/invitesModule.d.ts +0 -42
- package/codegen/orm/models/invitesModule.js +0 -77
- package/codegen/orm/models/levelsModule.d.ts +0 -42
- package/codegen/orm/models/levelsModule.js +0 -77
- package/codegen/orm/models/limitFunction.d.ts +0 -42
- package/codegen/orm/models/limitFunction.js +0 -77
- package/codegen/orm/models/limitsModule.d.ts +0 -42
- package/codegen/orm/models/limitsModule.js +0 -77
- package/codegen/orm/models/membershipTypesModule.d.ts +0 -42
- package/codegen/orm/models/membershipTypesModule.js +0 -77
- package/codegen/orm/models/membershipsModule.d.ts +0 -42
- package/codegen/orm/models/membershipsModule.js +0 -77
- package/codegen/orm/models/module.d.ts +0 -42
- package/codegen/orm/models/module.js +0 -77
- package/codegen/orm/models/moduleDefinition.d.ts +0 -42
- package/codegen/orm/models/moduleDefinition.js +0 -77
- package/codegen/orm/models/moduleField.d.ts +0 -42
- package/codegen/orm/models/moduleField.js +0 -77
- package/codegen/orm/models/moduleInputRecord.d.ts +0 -42
- package/codegen/orm/models/moduleInputRecord.js +0 -77
- package/codegen/orm/models/moduleOutput.d.ts +0 -42
- package/codegen/orm/models/moduleOutput.js +0 -77
- package/codegen/orm/models/permissionsModule.d.ts +0 -42
- package/codegen/orm/models/permissionsModule.js +0 -77
- package/codegen/orm/models/phoneNumbersModule.d.ts +0 -42
- package/codegen/orm/models/phoneNumbersModule.js +0 -77
- package/codegen/orm/models/policy.d.ts +0 -42
- package/codegen/orm/models/policy.js +0 -77
- package/codegen/orm/models/primaryKeyConstraint.d.ts +0 -42
- package/codegen/orm/models/primaryKeyConstraint.js +0 -77
- package/codegen/orm/models/procedure.d.ts +0 -42
- package/codegen/orm/models/procedure.js +0 -77
- package/codegen/orm/models/profilesModule.d.ts +0 -42
- package/codegen/orm/models/profilesModule.js +0 -77
- package/codegen/orm/models/rlsFunction.d.ts +0 -42
- package/codegen/orm/models/rlsFunction.js +0 -77
- package/codegen/orm/models/rlsModule.d.ts +0 -42
- package/codegen/orm/models/rlsModule.js +0 -77
- package/codegen/orm/models/schema.d.ts +0 -42
- package/codegen/orm/models/schema.js +0 -77
- package/codegen/orm/models/schemaGrant.d.ts +0 -42
- package/codegen/orm/models/schemaGrant.js +0 -77
- package/codegen/orm/models/secretsModule.d.ts +0 -42
- package/codegen/orm/models/secretsModule.js +0 -77
- package/codegen/orm/models/site.d.ts +0 -42
- package/codegen/orm/models/site.js +0 -77
- package/codegen/orm/models/siteMetadatum.d.ts +0 -42
- package/codegen/orm/models/siteMetadatum.js +0 -77
- package/codegen/orm/models/siteModule.d.ts +0 -42
- package/codegen/orm/models/siteModule.js +0 -77
- package/codegen/orm/models/siteTheme.d.ts +0 -42
- package/codegen/orm/models/siteTheme.js +0 -77
- package/codegen/orm/models/table.d.ts +0 -42
- package/codegen/orm/models/table.js +0 -77
- package/codegen/orm/models/tableGrant.d.ts +0 -42
- package/codegen/orm/models/tableGrant.js +0 -77
- package/codegen/orm/models/tokensModule.d.ts +0 -42
- package/codegen/orm/models/tokensModule.js +0 -77
- package/codegen/orm/models/trigger.d.ts +0 -42
- package/codegen/orm/models/trigger.js +0 -77
- package/codegen/orm/models/triggerFunction.d.ts +0 -42
- package/codegen/orm/models/triggerFunction.js +0 -77
- package/codegen/orm/models/uniqueConstraint.d.ts +0 -42
- package/codegen/orm/models/uniqueConstraint.js +0 -77
- package/codegen/orm/models/userAuthModule.d.ts +0 -42
- package/codegen/orm/models/userAuthModule.js +0 -77
- package/codegen/orm/models/usersModule.d.ts +0 -42
- package/codegen/orm/models/usersModule.js +0 -77
- package/codegen/orm/models/uuidModule.d.ts +0 -42
- package/codegen/orm/models/uuidModule.js +0 -77
- package/esm/codegen/orm/models/apiExtension.js +0 -73
- package/esm/codegen/orm/models/apiModule.js +0 -73
- package/esm/codegen/orm/models/apiSchema.js +0 -73
- package/esm/codegen/orm/models/app.js +0 -73
- package/esm/codegen/orm/models/checkConstraint.js +0 -73
- package/esm/codegen/orm/models/connectedAccountsModule.js +0 -73
- package/esm/codegen/orm/models/cryptoAddressesModule.js +0 -73
- package/esm/codegen/orm/models/cryptoAuthModule.js +0 -73
- package/esm/codegen/orm/models/database.js +0 -73
- package/esm/codegen/orm/models/databaseExtension.js +0 -73
- package/esm/codegen/orm/models/databaseProvision.js +0 -73
- package/esm/codegen/orm/models/defaultIdsModule.js +0 -73
- package/esm/codegen/orm/models/denormalizedTableField.js +0 -73
- package/esm/codegen/orm/models/emailsModule.js +0 -73
- package/esm/codegen/orm/models/encryptedSecretsModule.js +0 -73
- package/esm/codegen/orm/models/extension.js +0 -73
- package/esm/codegen/orm/models/field.js +0 -73
- package/esm/codegen/orm/models/fieldModule.js +0 -73
- package/esm/codegen/orm/models/foreignKeyConstraint.js +0 -73
- package/esm/codegen/orm/models/fullTextSearch.js +0 -73
- package/esm/codegen/orm/models/hierarchyModule.js +0 -73
- package/esm/codegen/orm/models/indexModel.js +0 -73
- package/esm/codegen/orm/models/invitesModule.js +0 -73
- package/esm/codegen/orm/models/levelsModule.js +0 -73
- package/esm/codegen/orm/models/limitFunction.js +0 -73
- package/esm/codegen/orm/models/limitsModule.js +0 -73
- package/esm/codegen/orm/models/membershipTypesModule.js +0 -73
- package/esm/codegen/orm/models/membershipsModule.js +0 -73
- package/esm/codegen/orm/models/module.js +0 -73
- package/esm/codegen/orm/models/moduleDefinition.js +0 -73
- package/esm/codegen/orm/models/moduleField.js +0 -73
- package/esm/codegen/orm/models/moduleInputRecord.js +0 -73
- package/esm/codegen/orm/models/moduleOutput.js +0 -73
- package/esm/codegen/orm/models/permissionsModule.js +0 -73
- package/esm/codegen/orm/models/phoneNumbersModule.js +0 -73
- package/esm/codegen/orm/models/policy.js +0 -73
- package/esm/codegen/orm/models/primaryKeyConstraint.js +0 -73
- package/esm/codegen/orm/models/procedure.js +0 -73
- package/esm/codegen/orm/models/profilesModule.js +0 -73
- package/esm/codegen/orm/models/rlsFunction.js +0 -73
- package/esm/codegen/orm/models/rlsModule.js +0 -73
- package/esm/codegen/orm/models/schema.js +0 -73
- package/esm/codegen/orm/models/schemaGrant.js +0 -73
- package/esm/codegen/orm/models/secretsModule.js +0 -73
- package/esm/codegen/orm/models/site.js +0 -73
- package/esm/codegen/orm/models/siteMetadatum.js +0 -73
- package/esm/codegen/orm/models/siteModule.js +0 -73
- package/esm/codegen/orm/models/siteTheme.js +0 -73
- package/esm/codegen/orm/models/table.js +0 -73
- package/esm/codegen/orm/models/tableGrant.js +0 -73
- package/esm/codegen/orm/models/tokensModule.js +0 -73
- package/esm/codegen/orm/models/trigger.js +0 -73
- package/esm/codegen/orm/models/triggerFunction.js +0 -73
- package/esm/codegen/orm/models/uniqueConstraint.js +0 -73
- package/esm/codegen/orm/models/userAuthModule.js +0 -73
- package/esm/codegen/orm/models/usersModule.js +0 -73
- package/esm/codegen/orm/models/uuidModule.js +0 -73
package/middleware/gql.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const
|
|
3
|
+
exports.normalizeApiRecord = exports.createGraphileOrm = exports.apiListSelect = exports.domainSelect = exports.apiSelect = exports.connectionFirst = void 0;
|
|
4
|
+
const client_1 = require("../codegen/orm/client");
|
|
5
|
+
const models_1 = require("../codegen/orm/models");
|
|
6
|
+
const query_1 = require("../codegen/orm/query");
|
|
7
|
+
exports.connectionFirst = 1000;
|
|
8
|
+
exports.apiSelect = {
|
|
6
9
|
databaseId: true,
|
|
7
10
|
dbname: true,
|
|
8
11
|
roleName: true,
|
|
@@ -13,15 +16,15 @@ const apiSelect = {
|
|
|
13
16
|
subdomain: true,
|
|
14
17
|
domain: true,
|
|
15
18
|
},
|
|
16
|
-
|
|
19
|
+
first: exports.connectionFirst,
|
|
17
20
|
},
|
|
18
21
|
apiExtensions: {
|
|
19
22
|
select: { schemaName: true },
|
|
20
|
-
|
|
23
|
+
first: exports.connectionFirst,
|
|
21
24
|
},
|
|
22
25
|
schemasByApiSchemaApiIdAndSchemaId: {
|
|
23
26
|
select: { schemaName: true },
|
|
24
|
-
|
|
27
|
+
first: exports.connectionFirst,
|
|
25
28
|
},
|
|
26
29
|
rlsModule: {
|
|
27
30
|
select: {
|
|
@@ -32,30 +35,17 @@ const apiSelect = {
|
|
|
32
35
|
currentRoleId: true,
|
|
33
36
|
},
|
|
34
37
|
},
|
|
35
|
-
database: {
|
|
36
|
-
select: {
|
|
37
|
-
sites: {
|
|
38
|
-
select: {
|
|
39
|
-
domains: {
|
|
40
|
-
select: { subdomain: true, domain: true },
|
|
41
|
-
connection: true,
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
connection: true,
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
38
|
apiModules: {
|
|
49
39
|
select: { name: true, data: true },
|
|
50
|
-
|
|
40
|
+
first: exports.connectionFirst,
|
|
51
41
|
},
|
|
52
42
|
};
|
|
53
|
-
|
|
43
|
+
exports.domainSelect = {
|
|
54
44
|
domain: true,
|
|
55
45
|
subdomain: true,
|
|
56
|
-
api: { select: apiSelect },
|
|
46
|
+
api: { select: exports.apiSelect },
|
|
57
47
|
};
|
|
58
|
-
|
|
48
|
+
exports.apiListSelect = {
|
|
59
49
|
id: true,
|
|
60
50
|
databaseId: true,
|
|
61
51
|
name: true,
|
|
@@ -65,62 +55,72 @@ const apisSelect = {
|
|
|
65
55
|
isPublic: true,
|
|
66
56
|
domains: {
|
|
67
57
|
select: { domain: true, subdomain: true },
|
|
68
|
-
|
|
69
|
-
},
|
|
70
|
-
database: {
|
|
71
|
-
select: {
|
|
72
|
-
sites: {
|
|
73
|
-
select: {
|
|
74
|
-
domains: {
|
|
75
|
-
select: { domain: true, subdomain: true },
|
|
76
|
-
connection: true,
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
|
-
connection: true,
|
|
80
|
-
},
|
|
81
|
-
},
|
|
58
|
+
first: exports.connectionFirst,
|
|
82
59
|
},
|
|
83
60
|
};
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
const buildDomainLookup = (vars) => {
|
|
90
|
-
const where = {
|
|
91
|
-
domain: { equalTo: vars.domain },
|
|
92
|
-
};
|
|
93
|
-
if (vars.subdomain === null || vars.subdomain === undefined) {
|
|
94
|
-
where.subdomain = { isNull: true };
|
|
61
|
+
class GraphileOrmClient extends client_1.OrmClient {
|
|
62
|
+
graphile;
|
|
63
|
+
constructor(graphile) {
|
|
64
|
+
super({ endpoint: 'http://localhost/graphql' });
|
|
65
|
+
this.graphile = graphile;
|
|
95
66
|
}
|
|
96
|
-
|
|
97
|
-
|
|
67
|
+
async execute(document, variables) {
|
|
68
|
+
const result = await this.graphile.query({
|
|
69
|
+
role: 'administrator',
|
|
70
|
+
query: document,
|
|
71
|
+
variables,
|
|
72
|
+
});
|
|
73
|
+
if (result.errors?.length) {
|
|
74
|
+
return {
|
|
75
|
+
ok: false,
|
|
76
|
+
data: null,
|
|
77
|
+
errors: result.errors,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
ok: true,
|
|
82
|
+
data: result.data,
|
|
83
|
+
errors: undefined,
|
|
84
|
+
};
|
|
98
85
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
// Import buildCustomDocument locally to avoid circular dependency
|
|
108
|
-
const { buildCustomDocument } = require('../codegen/orm/query-builder');
|
|
109
|
-
return buildCustomDocument('query', 'ApiByDatabaseIdAndName', 'apiByDatabaseIdAndName', apiSelect, vars, [
|
|
110
|
-
{ name: 'databaseId', type: 'UUID!' },
|
|
111
|
-
{ name: 'name', type: 'String!' },
|
|
112
|
-
]);
|
|
86
|
+
}
|
|
87
|
+
const createGraphileOrm = (graphile) => {
|
|
88
|
+
const client = new GraphileOrmClient(graphile);
|
|
89
|
+
return {
|
|
90
|
+
api: new models_1.ApiModel(client),
|
|
91
|
+
domain: new models_1.DomainModel(client),
|
|
92
|
+
query: (0, query_1.createQueryOperations)(client),
|
|
93
|
+
};
|
|
113
94
|
};
|
|
114
|
-
exports.
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
95
|
+
exports.createGraphileOrm = createGraphileOrm;
|
|
96
|
+
const normalizeApiRecord = (api) => {
|
|
97
|
+
const schemaNames = (api.apiExtensions?.nodes ?? []).flatMap((node) => node.schemaName ? [node.schemaName] : []);
|
|
98
|
+
const additionalSchemas = (api.schemasByApiSchemaApiIdAndSchemaId?.nodes ?? []).flatMap((node) => (node.schemaName ? [node.schemaName] : []));
|
|
99
|
+
let domains = [];
|
|
100
|
+
if (api.domains?.nodes?.length) {
|
|
101
|
+
domains = api.domains.nodes.reduce((acc, domain) => {
|
|
102
|
+
if (!domain.domain)
|
|
103
|
+
return acc;
|
|
104
|
+
const hostname = domain.subdomain
|
|
105
|
+
? `${domain.subdomain}.${domain.domain}`
|
|
106
|
+
: domain.domain;
|
|
107
|
+
const protocol = domain.domain === 'localhost' ? 'http://' : 'https://';
|
|
108
|
+
return [...acc, protocol + hostname];
|
|
109
|
+
}, []);
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
dbname: api.dbname,
|
|
113
|
+
anonRole: api.anonRole,
|
|
114
|
+
roleName: api.roleName,
|
|
115
|
+
schema: [...schemaNames, ...additionalSchemas],
|
|
116
|
+
apiModules: api.apiModules?.nodes?.map((node) => ({
|
|
117
|
+
name: node.name,
|
|
118
|
+
data: node.data,
|
|
119
|
+
})) || [],
|
|
120
|
+
rlsModule: api.rlsModule,
|
|
121
|
+
domains,
|
|
122
|
+
databaseId: api.databaseId,
|
|
123
|
+
isPublic: api.isPublic,
|
|
124
|
+
};
|
|
125
125
|
};
|
|
126
|
-
exports.
|
|
126
|
+
exports.normalizeApiRecord = normalizeApiRecord;
|
package/middleware/types.d.ts
CHANGED
|
@@ -1,29 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ApiStructure } from '../types';
|
|
2
2
|
export type ConstructiveAPIToken = {
|
|
3
3
|
id: string;
|
|
4
4
|
user_id: string;
|
|
5
|
-
[key: string]:
|
|
5
|
+
[key: string]: unknown;
|
|
6
6
|
};
|
|
7
7
|
declare global {
|
|
8
8
|
namespace Express {
|
|
9
9
|
interface Request {
|
|
10
|
-
api?:
|
|
11
|
-
dbname: string;
|
|
12
|
-
anonRole: string;
|
|
13
|
-
roleName: string;
|
|
14
|
-
schema: string[];
|
|
15
|
-
apiModules: ApiModule[];
|
|
16
|
-
rlsModule?: {
|
|
17
|
-
authenticate?: string;
|
|
18
|
-
authenticateStrict?: string;
|
|
19
|
-
privateSchema: {
|
|
20
|
-
schemaName: string;
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
domains?: string[];
|
|
24
|
-
databaseId?: string;
|
|
25
|
-
isPublic?: boolean;
|
|
26
|
-
};
|
|
10
|
+
api?: ApiStructure;
|
|
27
11
|
svc_key?: string;
|
|
28
12
|
clientIp?: string;
|
|
29
13
|
databaseId?: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@constructive-io/graphql-server",
|
|
3
|
-
"version": "2.19.
|
|
3
|
+
"version": "2.19.3",
|
|
4
4
|
"author": "Constructive <developers@constructive.io>",
|
|
5
5
|
"description": "Constructive GraphQL Server",
|
|
6
6
|
"main": "index.js",
|
|
@@ -31,7 +31,8 @@
|
|
|
31
31
|
"test:watch": "jest --watch",
|
|
32
32
|
"bucket:create": "ts-node src/scripts/create-bucket.ts",
|
|
33
33
|
"codegen:schema": "ts-node src/scripts/codegen-schema.ts",
|
|
34
|
-
"codegen": "
|
|
34
|
+
"codegen:clean": "rimraf src/codegen/orm codegen/schema.graphql",
|
|
35
|
+
"codegen": "npm run codegen:clean && npm run codegen:schema && graphql-codegen generate-orm --schema codegen/schema.graphql --output src/codegen/orm"
|
|
35
36
|
},
|
|
36
37
|
"keywords": [
|
|
37
38
|
"server",
|
|
@@ -52,6 +53,7 @@
|
|
|
52
53
|
"@pgpmjs/types": "^2.15.0",
|
|
53
54
|
"cors": "^2.8.5",
|
|
54
55
|
"express": "^5.2.1",
|
|
56
|
+
"gql-ast": "^2.6.0",
|
|
55
57
|
"graphile-build": "^4.14.1",
|
|
56
58
|
"graphile-cache": "^1.8.0",
|
|
57
59
|
"graphile-i18n": "^0.6.0",
|
|
@@ -76,7 +78,7 @@
|
|
|
76
78
|
},
|
|
77
79
|
"devDependencies": {
|
|
78
80
|
"@aws-sdk/client-s3": "^3.971.0",
|
|
79
|
-
"@constructive-io/graphql-codegen": "2.28.
|
|
81
|
+
"@constructive-io/graphql-codegen": "2.28.3",
|
|
80
82
|
"@types/cors": "^2.8.17",
|
|
81
83
|
"@types/express": "^5.0.6",
|
|
82
84
|
"@types/graphql-upload": "^8.0.12",
|
|
@@ -85,7 +87,8 @@
|
|
|
85
87
|
"graphile-test": "2.15.0",
|
|
86
88
|
"makage": "^0.1.10",
|
|
87
89
|
"nodemon": "^3.1.10",
|
|
90
|
+
"rimraf": "^6.1.2",
|
|
88
91
|
"ts-node": "^10.9.2"
|
|
89
92
|
},
|
|
90
|
-
"gitHead": "
|
|
93
|
+
"gitHead": "06cc06455356911bf9a24245849138892267b87d"
|
|
91
94
|
}
|
package/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { PgpmOptions } from '@pgpmjs/types';
|
|
1
2
|
export interface CorsModuleData {
|
|
2
3
|
urls: string[];
|
|
3
4
|
}
|
|
@@ -10,7 +11,7 @@ export interface PublicKeyChallengeData {
|
|
|
10
11
|
sign_in_with_challenge: string;
|
|
11
12
|
}
|
|
12
13
|
export interface GenericModuleData {
|
|
13
|
-
[key: string]:
|
|
14
|
+
[key: string]: unknown;
|
|
14
15
|
}
|
|
15
16
|
export type ApiModule = {
|
|
16
17
|
name: 'cors';
|
|
@@ -29,49 +30,6 @@ export interface RlsModule {
|
|
|
29
30
|
schemaName: string;
|
|
30
31
|
};
|
|
31
32
|
}
|
|
32
|
-
export interface SchemaNode {
|
|
33
|
-
schemaName: string;
|
|
34
|
-
}
|
|
35
|
-
export interface SchemaNodes {
|
|
36
|
-
nodes: SchemaNode[];
|
|
37
|
-
}
|
|
38
|
-
export interface Domain {
|
|
39
|
-
subdomain?: string;
|
|
40
|
-
domain: string;
|
|
41
|
-
}
|
|
42
|
-
export interface DomainNodes {
|
|
43
|
-
nodes: Domain[];
|
|
44
|
-
}
|
|
45
|
-
export interface Site {
|
|
46
|
-
domains: DomainNodes;
|
|
47
|
-
}
|
|
48
|
-
export interface SiteNodes {
|
|
49
|
-
nodes: Site[];
|
|
50
|
-
}
|
|
51
|
-
export interface ApiModuleNodes {
|
|
52
|
-
nodes: ApiModule[];
|
|
53
|
-
}
|
|
54
|
-
export interface Database {
|
|
55
|
-
sites: SiteNodes;
|
|
56
|
-
}
|
|
57
|
-
export interface OldApiStructure {
|
|
58
|
-
dbname: string;
|
|
59
|
-
anonRole: string;
|
|
60
|
-
roleName: string;
|
|
61
|
-
schemasByApiSchemaApiIdAndSchemaId: SchemaNodes;
|
|
62
|
-
apiExtensions: SchemaNodes;
|
|
63
|
-
apiModules: ApiModuleNodes;
|
|
64
|
-
rlsModule?: RlsModule;
|
|
65
|
-
database?: Database;
|
|
66
|
-
databaseId?: string;
|
|
67
|
-
isPublic?: boolean;
|
|
68
|
-
}
|
|
69
|
-
export interface ServiceData {
|
|
70
|
-
api: OldApiStructure;
|
|
71
|
-
}
|
|
72
|
-
export interface Service {
|
|
73
|
-
data: ServiceData;
|
|
74
|
-
}
|
|
75
33
|
export interface ApiStructure {
|
|
76
34
|
dbname: string;
|
|
77
35
|
anonRole: string;
|
|
@@ -83,3 +41,18 @@ export interface ApiStructure {
|
|
|
83
41
|
databaseId?: string;
|
|
84
42
|
isPublic?: boolean;
|
|
85
43
|
}
|
|
44
|
+
export type ApiError = {
|
|
45
|
+
errorHtml: string;
|
|
46
|
+
};
|
|
47
|
+
export type ApiConfigResult = ApiStructure | ApiError | null;
|
|
48
|
+
export type ApiOptions = PgpmOptions & {
|
|
49
|
+
api?: {
|
|
50
|
+
enableServicesApi?: boolean;
|
|
51
|
+
exposedSchemas?: string[];
|
|
52
|
+
anonRole?: string;
|
|
53
|
+
roleName?: string;
|
|
54
|
+
defaultDatabaseId?: string;
|
|
55
|
+
metaSchemas?: string[];
|
|
56
|
+
isPublic?: boolean;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ApiExtension model for ORM client
|
|
3
|
-
* @generated by @constructive-io/graphql-codegen
|
|
4
|
-
* DO NOT EDIT - changes will be overwritten
|
|
5
|
-
*/
|
|
6
|
-
import { OrmClient } from '../client';
|
|
7
|
-
import { QueryBuilder } from '../query-builder';
|
|
8
|
-
import { type ConnectionResult, type FindManyArgs, type FindFirstArgs, type CreateArgs, type UpdateArgs, type DeleteArgs, type InferSelectResult } from '../select-types';
|
|
9
|
-
import { type ApiExtensionWithRelations, type ApiExtensionSelect, type ApiExtensionFilter, type ApiExtensionsOrderBy, type CreateApiExtensionInput, type ApiExtensionPatch } from '../input-types';
|
|
10
|
-
export declare class ApiExtensionModel {
|
|
11
|
-
private client;
|
|
12
|
-
constructor(client: OrmClient);
|
|
13
|
-
findMany<const S extends ApiExtensionSelect>(args?: FindManyArgs<S, ApiExtensionFilter, ApiExtensionsOrderBy>): QueryBuilder<{
|
|
14
|
-
apiExtensions: ConnectionResult<InferSelectResult<ApiExtensionWithRelations, S>>;
|
|
15
|
-
}>;
|
|
16
|
-
findFirst<const S extends ApiExtensionSelect>(args?: FindFirstArgs<S, ApiExtensionFilter>): QueryBuilder<{
|
|
17
|
-
apiExtensions: {
|
|
18
|
-
nodes: InferSelectResult<ApiExtensionWithRelations, S>[];
|
|
19
|
-
};
|
|
20
|
-
}>;
|
|
21
|
-
create<const S extends ApiExtensionSelect>(args: CreateArgs<S, CreateApiExtensionInput['apiExtension']>): QueryBuilder<{
|
|
22
|
-
createApiExtension: {
|
|
23
|
-
apiExtension: InferSelectResult<ApiExtensionWithRelations, S>;
|
|
24
|
-
};
|
|
25
|
-
}>;
|
|
26
|
-
update<const S extends ApiExtensionSelect>(args: UpdateArgs<S, {
|
|
27
|
-
id: string;
|
|
28
|
-
}, ApiExtensionPatch>): QueryBuilder<{
|
|
29
|
-
updateApiExtension: {
|
|
30
|
-
apiExtension: InferSelectResult<ApiExtensionWithRelations, S>;
|
|
31
|
-
};
|
|
32
|
-
}>;
|
|
33
|
-
delete(args: DeleteArgs<{
|
|
34
|
-
id: string;
|
|
35
|
-
}>): QueryBuilder<{
|
|
36
|
-
deleteApiExtension: {
|
|
37
|
-
apiExtension: {
|
|
38
|
-
id: string;
|
|
39
|
-
};
|
|
40
|
-
};
|
|
41
|
-
}>;
|
|
42
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ApiExtensionModel = void 0;
|
|
4
|
-
const query_builder_1 = require("../query-builder");
|
|
5
|
-
// ============================================================================
|
|
6
|
-
// Model Class
|
|
7
|
-
// ============================================================================
|
|
8
|
-
class ApiExtensionModel {
|
|
9
|
-
client;
|
|
10
|
-
constructor(client) {
|
|
11
|
-
this.client = client;
|
|
12
|
-
}
|
|
13
|
-
findMany(args) {
|
|
14
|
-
const { document, variables } = (0, query_builder_1.buildFindManyDocument)('ApiExtension', 'apiExtensions', args?.select, {
|
|
15
|
-
where: args?.where,
|
|
16
|
-
orderBy: args?.orderBy,
|
|
17
|
-
first: args?.first,
|
|
18
|
-
last: args?.last,
|
|
19
|
-
after: args?.after,
|
|
20
|
-
before: args?.before,
|
|
21
|
-
offset: args?.offset,
|
|
22
|
-
}, 'ApiExtensionFilter', 'ApiExtensionsOrderBy');
|
|
23
|
-
return new query_builder_1.QueryBuilder({
|
|
24
|
-
client: this.client,
|
|
25
|
-
operation: 'query',
|
|
26
|
-
operationName: 'ApiExtension',
|
|
27
|
-
fieldName: 'apiExtensions',
|
|
28
|
-
document,
|
|
29
|
-
variables,
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
findFirst(args) {
|
|
33
|
-
const { document, variables } = (0, query_builder_1.buildFindFirstDocument)('ApiExtension', 'apiExtensions', args?.select, { where: args?.where }, 'ApiExtensionFilter');
|
|
34
|
-
return new query_builder_1.QueryBuilder({
|
|
35
|
-
client: this.client,
|
|
36
|
-
operation: 'query',
|
|
37
|
-
operationName: 'ApiExtension',
|
|
38
|
-
fieldName: 'apiExtensions',
|
|
39
|
-
document,
|
|
40
|
-
variables,
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
create(args) {
|
|
44
|
-
const { document, variables } = (0, query_builder_1.buildCreateDocument)('ApiExtension', 'createApiExtension', 'apiExtension', args.select, args.data, 'CreateApiExtensionInput');
|
|
45
|
-
return new query_builder_1.QueryBuilder({
|
|
46
|
-
client: this.client,
|
|
47
|
-
operation: 'mutation',
|
|
48
|
-
operationName: 'ApiExtension',
|
|
49
|
-
fieldName: 'createApiExtension',
|
|
50
|
-
document,
|
|
51
|
-
variables,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
update(args) {
|
|
55
|
-
const { document, variables } = (0, query_builder_1.buildUpdateDocument)('ApiExtension', 'updateApiExtension', 'apiExtension', args.select, args.where, args.data, 'UpdateApiExtensionInput');
|
|
56
|
-
return new query_builder_1.QueryBuilder({
|
|
57
|
-
client: this.client,
|
|
58
|
-
operation: 'mutation',
|
|
59
|
-
operationName: 'ApiExtension',
|
|
60
|
-
fieldName: 'updateApiExtension',
|
|
61
|
-
document,
|
|
62
|
-
variables,
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
delete(args) {
|
|
66
|
-
const { document, variables } = (0, query_builder_1.buildDeleteDocument)('ApiExtension', 'deleteApiExtension', 'apiExtension', args.where, 'DeleteApiExtensionInput');
|
|
67
|
-
return new query_builder_1.QueryBuilder({
|
|
68
|
-
client: this.client,
|
|
69
|
-
operation: 'mutation',
|
|
70
|
-
operationName: 'ApiExtension',
|
|
71
|
-
fieldName: 'deleteApiExtension',
|
|
72
|
-
document,
|
|
73
|
-
variables,
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
exports.ApiExtensionModel = ApiExtensionModel;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ApiModule model for ORM client
|
|
3
|
-
* @generated by @constructive-io/graphql-codegen
|
|
4
|
-
* DO NOT EDIT - changes will be overwritten
|
|
5
|
-
*/
|
|
6
|
-
import { OrmClient } from '../client';
|
|
7
|
-
import { QueryBuilder } from '../query-builder';
|
|
8
|
-
import { type ConnectionResult, type FindManyArgs, type FindFirstArgs, type CreateArgs, type UpdateArgs, type DeleteArgs, type InferSelectResult } from '../select-types';
|
|
9
|
-
import { type ApiModuleWithRelations, type ApiModuleSelect, type ApiModuleFilter, type ApiModulesOrderBy, type CreateApiModuleInput, type ApiModulePatch } from '../input-types';
|
|
10
|
-
export declare class ApiModuleModel {
|
|
11
|
-
private client;
|
|
12
|
-
constructor(client: OrmClient);
|
|
13
|
-
findMany<const S extends ApiModuleSelect>(args?: FindManyArgs<S, ApiModuleFilter, ApiModulesOrderBy>): QueryBuilder<{
|
|
14
|
-
apiModules: ConnectionResult<InferSelectResult<ApiModuleWithRelations, S>>;
|
|
15
|
-
}>;
|
|
16
|
-
findFirst<const S extends ApiModuleSelect>(args?: FindFirstArgs<S, ApiModuleFilter>): QueryBuilder<{
|
|
17
|
-
apiModules: {
|
|
18
|
-
nodes: InferSelectResult<ApiModuleWithRelations, S>[];
|
|
19
|
-
};
|
|
20
|
-
}>;
|
|
21
|
-
create<const S extends ApiModuleSelect>(args: CreateArgs<S, CreateApiModuleInput['apiModule']>): QueryBuilder<{
|
|
22
|
-
createApiModule: {
|
|
23
|
-
apiModule: InferSelectResult<ApiModuleWithRelations, S>;
|
|
24
|
-
};
|
|
25
|
-
}>;
|
|
26
|
-
update<const S extends ApiModuleSelect>(args: UpdateArgs<S, {
|
|
27
|
-
id: string;
|
|
28
|
-
}, ApiModulePatch>): QueryBuilder<{
|
|
29
|
-
updateApiModule: {
|
|
30
|
-
apiModule: InferSelectResult<ApiModuleWithRelations, S>;
|
|
31
|
-
};
|
|
32
|
-
}>;
|
|
33
|
-
delete(args: DeleteArgs<{
|
|
34
|
-
id: string;
|
|
35
|
-
}>): QueryBuilder<{
|
|
36
|
-
deleteApiModule: {
|
|
37
|
-
apiModule: {
|
|
38
|
-
id: string;
|
|
39
|
-
};
|
|
40
|
-
};
|
|
41
|
-
}>;
|
|
42
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ApiModuleModel = void 0;
|
|
4
|
-
const query_builder_1 = require("../query-builder");
|
|
5
|
-
// ============================================================================
|
|
6
|
-
// Model Class
|
|
7
|
-
// ============================================================================
|
|
8
|
-
class ApiModuleModel {
|
|
9
|
-
client;
|
|
10
|
-
constructor(client) {
|
|
11
|
-
this.client = client;
|
|
12
|
-
}
|
|
13
|
-
findMany(args) {
|
|
14
|
-
const { document, variables } = (0, query_builder_1.buildFindManyDocument)('ApiModule', 'apiModules', args?.select, {
|
|
15
|
-
where: args?.where,
|
|
16
|
-
orderBy: args?.orderBy,
|
|
17
|
-
first: args?.first,
|
|
18
|
-
last: args?.last,
|
|
19
|
-
after: args?.after,
|
|
20
|
-
before: args?.before,
|
|
21
|
-
offset: args?.offset,
|
|
22
|
-
}, 'ApiModuleFilter', 'ApiModulesOrderBy');
|
|
23
|
-
return new query_builder_1.QueryBuilder({
|
|
24
|
-
client: this.client,
|
|
25
|
-
operation: 'query',
|
|
26
|
-
operationName: 'ApiModule',
|
|
27
|
-
fieldName: 'apiModules',
|
|
28
|
-
document,
|
|
29
|
-
variables,
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
findFirst(args) {
|
|
33
|
-
const { document, variables } = (0, query_builder_1.buildFindFirstDocument)('ApiModule', 'apiModules', args?.select, { where: args?.where }, 'ApiModuleFilter');
|
|
34
|
-
return new query_builder_1.QueryBuilder({
|
|
35
|
-
client: this.client,
|
|
36
|
-
operation: 'query',
|
|
37
|
-
operationName: 'ApiModule',
|
|
38
|
-
fieldName: 'apiModules',
|
|
39
|
-
document,
|
|
40
|
-
variables,
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
create(args) {
|
|
44
|
-
const { document, variables } = (0, query_builder_1.buildCreateDocument)('ApiModule', 'createApiModule', 'apiModule', args.select, args.data, 'CreateApiModuleInput');
|
|
45
|
-
return new query_builder_1.QueryBuilder({
|
|
46
|
-
client: this.client,
|
|
47
|
-
operation: 'mutation',
|
|
48
|
-
operationName: 'ApiModule',
|
|
49
|
-
fieldName: 'createApiModule',
|
|
50
|
-
document,
|
|
51
|
-
variables,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
update(args) {
|
|
55
|
-
const { document, variables } = (0, query_builder_1.buildUpdateDocument)('ApiModule', 'updateApiModule', 'apiModule', args.select, args.where, args.data, 'UpdateApiModuleInput');
|
|
56
|
-
return new query_builder_1.QueryBuilder({
|
|
57
|
-
client: this.client,
|
|
58
|
-
operation: 'mutation',
|
|
59
|
-
operationName: 'ApiModule',
|
|
60
|
-
fieldName: 'updateApiModule',
|
|
61
|
-
document,
|
|
62
|
-
variables,
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
delete(args) {
|
|
66
|
-
const { document, variables } = (0, query_builder_1.buildDeleteDocument)('ApiModule', 'deleteApiModule', 'apiModule', args.where, 'DeleteApiModuleInput');
|
|
67
|
-
return new query_builder_1.QueryBuilder({
|
|
68
|
-
client: this.client,
|
|
69
|
-
operation: 'mutation',
|
|
70
|
-
operationName: 'ApiModule',
|
|
71
|
-
fieldName: 'deleteApiModule',
|
|
72
|
-
document,
|
|
73
|
-
variables,
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
exports.ApiModuleModel = ApiModuleModel;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ApiSchema model for ORM client
|
|
3
|
-
* @generated by @constructive-io/graphql-codegen
|
|
4
|
-
* DO NOT EDIT - changes will be overwritten
|
|
5
|
-
*/
|
|
6
|
-
import { OrmClient } from '../client';
|
|
7
|
-
import { QueryBuilder } from '../query-builder';
|
|
8
|
-
import { type ConnectionResult, type FindManyArgs, type FindFirstArgs, type CreateArgs, type UpdateArgs, type DeleteArgs, type InferSelectResult } from '../select-types';
|
|
9
|
-
import { type ApiSchemaWithRelations, type ApiSchemaSelect, type ApiSchemaFilter, type ApiSchemasOrderBy, type CreateApiSchemaInput, type ApiSchemaPatch } from '../input-types';
|
|
10
|
-
export declare class ApiSchemaModel {
|
|
11
|
-
private client;
|
|
12
|
-
constructor(client: OrmClient);
|
|
13
|
-
findMany<const S extends ApiSchemaSelect>(args?: FindManyArgs<S, ApiSchemaFilter, ApiSchemasOrderBy>): QueryBuilder<{
|
|
14
|
-
apiSchemas: ConnectionResult<InferSelectResult<ApiSchemaWithRelations, S>>;
|
|
15
|
-
}>;
|
|
16
|
-
findFirst<const S extends ApiSchemaSelect>(args?: FindFirstArgs<S, ApiSchemaFilter>): QueryBuilder<{
|
|
17
|
-
apiSchemas: {
|
|
18
|
-
nodes: InferSelectResult<ApiSchemaWithRelations, S>[];
|
|
19
|
-
};
|
|
20
|
-
}>;
|
|
21
|
-
create<const S extends ApiSchemaSelect>(args: CreateArgs<S, CreateApiSchemaInput['apiSchema']>): QueryBuilder<{
|
|
22
|
-
createApiSchema: {
|
|
23
|
-
apiSchema: InferSelectResult<ApiSchemaWithRelations, S>;
|
|
24
|
-
};
|
|
25
|
-
}>;
|
|
26
|
-
update<const S extends ApiSchemaSelect>(args: UpdateArgs<S, {
|
|
27
|
-
id: string;
|
|
28
|
-
}, ApiSchemaPatch>): QueryBuilder<{
|
|
29
|
-
updateApiSchema: {
|
|
30
|
-
apiSchema: InferSelectResult<ApiSchemaWithRelations, S>;
|
|
31
|
-
};
|
|
32
|
-
}>;
|
|
33
|
-
delete(args: DeleteArgs<{
|
|
34
|
-
id: string;
|
|
35
|
-
}>): QueryBuilder<{
|
|
36
|
-
deleteApiSchema: {
|
|
37
|
-
apiSchema: {
|
|
38
|
-
id: string;
|
|
39
|
-
};
|
|
40
|
-
};
|
|
41
|
-
}>;
|
|
42
|
-
}
|