typeorm-hasura 0.0.17 → 0.0.18
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/dist/dev-playground/CustomBaseEntity.d.ts +3 -0
- package/dist/dev-playground/CustomBaseEntity.js +14 -0
- package/dist/dev-playground/CustomBaseEntity.js.map +1 -0
- package/dist/dev-playground/entity/Org.d.ts +2 -2
- package/dist/dev-playground/entity/Org.js +2 -1
- package/dist/dev-playground/entity/Org.js.map +1 -1
- package/dist/dev-playground/entity/Product.d.ts +2 -2
- package/dist/dev-playground/entity/Product.js +2 -1
- package/dist/dev-playground/entity/Product.js.map +1 -1
- package/dist/dev-playground/entity/ProductView.d.ts +2 -2
- package/dist/dev-playground/entity/ProductView.js +2 -1
- package/dist/dev-playground/entity/ProductView.js.map +1 -1
- package/dist/dev-playground/entity/User.d.ts +2 -2
- package/dist/dev-playground/entity/User.js +2 -1
- package/dist/dev-playground/entity/User.js.map +1 -1
- package/dist/dev-playground/entity/UserView.d.ts +2 -2
- package/dist/dev-playground/entity/UserView.js +2 -1
- package/dist/dev-playground/entity/UserView.js.map +1 -1
- package/dist/dev-playground/entity/index.js.map +1 -1
- package/dist/dev-playground/hasura.js +10 -2
- package/dist/dev-playground/hasura.js.map +1 -1
- package/dist/src/builders/Metadata.js +25 -8
- package/dist/src/builders/Metadata.js.map +1 -1
- package/dist/src/mappers/permissions.js +1 -4
- package/dist/src/mappers/permissions.js.map +1 -1
- package/dist/src/mappers/relationships.js +21 -16
- package/dist/src/mappers/relationships.js.map +1 -1
- package/dist/src/mappers/table.js +3 -3
- package/dist/src/mappers/table.js.map +1 -1
- package/dist/src/types/DataSourceOptions.d.ts +5 -2
- package/dist/src/types/permissions.d.ts +6 -0
- package/package.json +8 -7
- package/readme.md +15 -2
- package/src/builders/Action.ts +38 -0
- package/src/builders/Metadata.ts +171 -0
- package/src/builders/index.ts +2 -0
- package/src/decorators/Column.ts +12 -0
- package/src/decorators/Entity.ts +12 -0
- package/src/decorators/index.ts +2 -0
- package/src/index.ts +5 -0
- package/src/internalStorage.ts +26 -0
- package/src/mappers/databaseUrl.spec.ts +33 -0
- package/src/mappers/databaseUrl.ts +19 -0
- package/src/mappers/graphql.spec.ts +125 -0
- package/src/mappers/graphql.ts +75 -0
- package/src/mappers/hasuraKind.spec.ts +12 -0
- package/src/mappers/hasuraKind.ts +11 -0
- package/src/mappers/index.ts +3 -0
- package/src/mappers/inheritedRoles.ts +13 -0
- package/src/mappers/operators.ts +23 -0
- package/src/mappers/permissions.spec.ts +176 -0
- package/src/mappers/permissions.ts +89 -0
- package/src/mappers/relationships.ts +103 -0
- package/src/mappers/source.ts +32 -0
- package/src/mappers/table.ts +36 -0
- package/src/mappers/tableConfiguration.ts +42 -0
- package/src/mappers/whereClause.spec.ts +183 -0
- package/src/mappers/whereClause.ts +54 -0
- package/src/types/Action.ts +27 -0
- package/src/types/Column.ts +18 -0
- package/src/types/DataSourceOptions.ts +25 -0
- package/src/types/Entity.ts +60 -0
- package/src/types/InheritedRoles.ts +6 -0
- package/src/types/base.ts +2 -0
- package/src/types/index.ts +8 -0
- package/src/types/permissions.ts +44 -0
- package/src/types/whereClause.ts +99 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// https://typeorm.io/active-record-data-mapper
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.CustomBaseEntity = void 0;
|
|
5
|
+
//
|
|
6
|
+
const typeorm_1 = require("typeorm");
|
|
7
|
+
class CustomBaseEntity extends typeorm_1.BaseEntity {
|
|
8
|
+
}
|
|
9
|
+
exports.CustomBaseEntity = CustomBaseEntity;
|
|
10
|
+
;
|
|
11
|
+
/*/
|
|
12
|
+
export class CustomBaseEntity { };
|
|
13
|
+
//*/
|
|
14
|
+
//# sourceMappingURL=CustomBaseEntity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomBaseEntity.js","sourceRoot":"","sources":["../../dev-playground/CustomBaseEntity.ts"],"names":[],"mappings":";AAAA,+CAA+C;;;AAE/C,EAAE;AACF,qCAAqC;AACrC,MAAa,gBAAiB,SAAQ,oBAAU;CAAI;AAApD,4CAAoD;AAAA,CAAC;AACrD;;IAEI"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { BaseEntity } from 'typeorm';
|
|
2
1
|
import { Product } from './Product';
|
|
3
2
|
import { User } from './User';
|
|
4
|
-
|
|
3
|
+
import { CustomBaseEntity } from '../CustomBaseEntity';
|
|
4
|
+
export declare class Org extends CustomBaseEntity {
|
|
5
5
|
id: string;
|
|
6
6
|
name: string;
|
|
7
7
|
users: User[];
|
|
@@ -15,7 +15,8 @@ const src_1 = require("../../src");
|
|
|
15
15
|
const Product_1 = require("./Product");
|
|
16
16
|
const User_1 = require("./User");
|
|
17
17
|
const UserRole_1 = require("../UserRole");
|
|
18
|
-
|
|
18
|
+
const CustomBaseEntity_1 = require("../CustomBaseEntity");
|
|
19
|
+
let Org = class Org extends CustomBaseEntity_1.CustomBaseEntity {
|
|
19
20
|
};
|
|
20
21
|
exports.Org = Org;
|
|
21
22
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Org.js","sourceRoot":"","sources":["../../../dev-playground/entity/Org.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"Org.js","sourceRoot":"","sources":["../../../dev-playground/entity/Org.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAKiB;AACjB,mCAAuD;AACvD,uCAAoC;AACpC,iCAA8B;AAC9B,0CAAuC;AACvC,0DAAuD;AAkBhD,IAAM,GAAG,GAAT,MAAM,GAAI,SAAQ,mCAAgB;CAsBxC,CAAA;AAtBY,kBAAG;AAOZ;IANC,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAC9B,IAAA,kBAAY,EAAC;QACV,WAAW,EAAE;YACT,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;SAC9B;KACJ,CAAC;;+BACU;AAQZ;IANC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxC,IAAA,kBAAY,EAAC;QACV,WAAW,EAAE;YACT,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SACxC;KACJ,CAAC;;iCACY;AAGd;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,WAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;;kCAC3B;AAGf;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,iBAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;;qCAC9B;cArBZ,GAAG;IAff,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACzC,IAAA,kBAAY,EAAM;QACf,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE;YACT,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE;gBACb,KAAK,EAAE;oBACH,KAAK,EAAE;wBACH,EAAE,EAAE,kBAAkB;qBACzB;iBACJ;gBACD,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,IAAI;aACf;SACJ;KACJ,CAAC;GACW,GAAG,CAsBf"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { BaseEntity } from 'typeorm';
|
|
2
1
|
import { User } from './User';
|
|
3
2
|
import { Org } from "./Org";
|
|
4
|
-
|
|
3
|
+
import { CustomBaseEntity } from '../CustomBaseEntity';
|
|
4
|
+
export declare class Product extends CustomBaseEntity {
|
|
5
5
|
id: string;
|
|
6
6
|
name: string;
|
|
7
7
|
orgId: string;
|
|
@@ -15,7 +15,8 @@ const src_1 = require("../../src");
|
|
|
15
15
|
const User_1 = require("./User");
|
|
16
16
|
const Org_1 = require("./Org");
|
|
17
17
|
const UserRole_1 = require("../UserRole");
|
|
18
|
-
|
|
18
|
+
const CustomBaseEntity_1 = require("../CustomBaseEntity");
|
|
19
|
+
let Product = class Product extends CustomBaseEntity_1.CustomBaseEntity {
|
|
19
20
|
};
|
|
20
21
|
exports.Product = Product;
|
|
21
22
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Product.js","sourceRoot":"","sources":["../../../dev-playground/entity/Product.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"Product.js","sourceRoot":"","sources":["../../../dev-playground/entity/Product.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAKiB;AACjB,mCAAuD;AACvD,iCAA8B;AAC9B,+BAA4B;AAC5B,0CAAuC;AACvC,0DAAuD;AAuBhD,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,mCAAgB;CAwC5C,CAAA;AAxCY,0BAAO;AAOhB;IANC,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAC9B,IAAA,kBAAY,EAAC;QACV,WAAW,EAAE;YACT,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;SAC9B;KACJ,CAAC;;mCACU;AAQZ;IANC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxC,IAAA,kBAAY,EAAC;QACV,WAAW,EAAE;YACT,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SACxC;KACJ,CAAC;;qCACY;AAQd;IANC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvD,IAAA,kBAAY,EAAC;QACV,WAAW,EAAE;YACT,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;SAC9B;KACJ,CAAC;;sCACa;AAIf;IAFC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,SAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC3C,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;8BACxB,SAAG;oCAAC;AAQV;IANC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxD,IAAA,kBAAY,EAAC;QACV,WAAW,EAAE;YACT,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;SAC9B;KACJ,CAAC;;uCACc;AAIhB;IAFC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,WAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC9C,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;8BACxB,WAAI;qCAAC;kBAvCH,OAAO;IApBnB,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC7C,IAAA,kBAAY,EAAU;QACnB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE;YACT,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE;gBACb,KAAK,EAAE;oBACH,EAAE,MAAM,EAAE,kBAAkB,EAAE;oBAC9B;wBACI,GAAG,EAAE;4BACD,KAAK,EAAE;gCACH,EAAE,EAAE,kBAAkB;6BACzB;yBACJ;qBACJ;iBACJ;gBACD,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,IAAI;aACf;SACJ;KACJ,CAAC;GACW,OAAO,CAwCnB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BaseEntity } from "typeorm";
|
|
2
1
|
import { Org, UserView } from ".";
|
|
3
|
-
|
|
2
|
+
import { CustomBaseEntity } from "../CustomBaseEntity";
|
|
3
|
+
export declare class ProductView extends CustomBaseEntity {
|
|
4
4
|
id: string;
|
|
5
5
|
name: string;
|
|
6
6
|
orgId: string;
|
|
@@ -14,7 +14,8 @@ const typeorm_1 = require("typeorm");
|
|
|
14
14
|
const src_1 = require("../../src");
|
|
15
15
|
const UserRole_1 = require("../UserRole");
|
|
16
16
|
const _1 = require(".");
|
|
17
|
-
|
|
17
|
+
const CustomBaseEntity_1 = require("../CustomBaseEntity");
|
|
18
|
+
let ProductView = class ProductView extends CustomBaseEntity_1.CustomBaseEntity {
|
|
18
19
|
};
|
|
19
20
|
exports.ProductView = ProductView;
|
|
20
21
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductView.js","sourceRoot":"","sources":["../../../dev-playground/entity/ProductView.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"ProductView.js","sourceRoot":"","sources":["../../../dev-playground/entity/ProductView.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAgG;AAChG,mCAAuD;AACvD,0CAAuC;AACvC,wBAA2C;AAC3C,0DAAuD;AAqBhD,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,mCAAgB;CAyBhD,CAAA;AAzBY,kCAAW;AAGpB;IAFC,IAAA,oBAAU,GAAE;IACZ,IAAA,kBAAY,EAAC,EAAE,WAAW,EAAE,EAAE,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;;uCACnD;AAIZ;IAFC,IAAA,oBAAU,GAAE;IACZ,IAAA,kBAAY,EAAC,EAAE,WAAW,EAAE,EAAE,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;;yCAC3D;AAKd;IAHC,IAAA,oBAAU,GAAE;IACZ,IAAA,oBAAU,EAAC,CAAC,KAAkB,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;IAC7C,IAAA,kBAAY,EAAC,EAAE,WAAW,EAAE,EAAE,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;;0CAChD;AAIf;IAFC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,MAAG,CAAC;IACpB,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;8BACxB,MAAG;wCAAC;AAKV;IAHC,IAAA,oBAAU,GAAE;IACZ,IAAA,oBAAU,EAAC,CAAC,KAAkB,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;IAC9C,IAAA,kBAAY,EAAC,EAAE,WAAW,EAAE,EAAE,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;;2CAC/C;AAGhB;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,WAAQ,CAAC;8BACnB,WAAQ;yCAAC;sBAxBP,WAAW;IAnBvB,IAAA,oBAAU,EAAC;QACR,IAAI,EAAE,aAAa;QACnB,UAAU,EAAE,CAAC,UAAsB,EAAE,EAAE,CACnC,UAAU;aACL,kBAAkB,EAAE;aACpB,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC;aAC1B,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;aACjC,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC;aACnC,SAAS,CAAC,gBAAgB,EAAE,QAAQ,CAAC;aACrC,IAAI,CAAC,UAAO,EAAE,SAAS,CAAC;KACpC,CAAC;IACD,IAAA,kBAAY,EAAc;QACvB,UAAU,EAAE,aAAa;QACzB,WAAW,EAAE;YACT,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE;gBACb,MAAM,EAAE,IAAI;aACf;SACJ;KACJ,CAAC;GACW,WAAW,CAyBvB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { BaseEntity } from 'typeorm';
|
|
2
1
|
import { Org } from './Org';
|
|
3
2
|
import { Product } from './Product';
|
|
4
|
-
|
|
3
|
+
import { CustomBaseEntity } from '../CustomBaseEntity';
|
|
4
|
+
export declare class User extends CustomBaseEntity {
|
|
5
5
|
id: string;
|
|
6
6
|
name: string;
|
|
7
7
|
orgId: string;
|
|
@@ -15,7 +15,8 @@ const src_1 = require("../../src");
|
|
|
15
15
|
const Org_1 = require("./Org");
|
|
16
16
|
const Product_1 = require("./Product");
|
|
17
17
|
const UserRole_1 = require("../UserRole");
|
|
18
|
-
|
|
18
|
+
const CustomBaseEntity_1 = require("../CustomBaseEntity");
|
|
19
|
+
let User = class User extends CustomBaseEntity_1.CustomBaseEntity {
|
|
19
20
|
};
|
|
20
21
|
exports.User = User;
|
|
21
22
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"User.js","sourceRoot":"","sources":["../../../dev-playground/entity/User.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"User.js","sourceRoot":"","sources":["../../../dev-playground/entity/User.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAOiB;AACjB,mCAAuD;AACvD,+BAA4B;AAC5B,uCAAoC;AACpC,0CAAuC;AACvC,0DAAuD;AAiBhD,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,mCAAgB;CAsBzC,CAAA;AAtBY,oBAAI;AAGb;IAFC,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAC9B,IAAA,kBAAY,EAAC,EAAE,WAAW,EAAE,EAAE,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;;gCACnD;AAIZ;IAFC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxC,IAAA,kBAAY,EAAC,EAAE,WAAW,EAAE,EAAE,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;;kCAC3D;AAId;IAFC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvD,IAAA,kBAAY,EAAC,EAAE,WAAW,EAAE,EAAE,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;;mCAChD;AAGf;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uCACxB;AAIlB;IAFC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,SAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;IACxC,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;8BACxB,SAAG;iCAAC;AAGV;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,iBAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;;sCAC/B;eArBZ,IAAI;IAdhB,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1C,IAAA,kBAAY,EAAO;QAChB,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE;YACT,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE;gBACb,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE;oBACJ,KAAK,EAAE;wBACH,EAAE,EAAE,kBAAkB;qBACzB;iBACJ;aACJ;SACJ;KACJ,CAAC;GACW,IAAI,CAsBhB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BaseEntity } from "typeorm";
|
|
2
1
|
import { Org, ProductView } from ".";
|
|
3
|
-
|
|
2
|
+
import { CustomBaseEntity } from "../CustomBaseEntity";
|
|
3
|
+
export declare class UserView extends CustomBaseEntity {
|
|
4
4
|
id: string;
|
|
5
5
|
name: string;
|
|
6
6
|
orgId: string;
|
|
@@ -14,7 +14,8 @@ const typeorm_1 = require("typeorm");
|
|
|
14
14
|
const src_1 = require("../../src");
|
|
15
15
|
const UserRole_1 = require("../UserRole");
|
|
16
16
|
const _1 = require(".");
|
|
17
|
-
|
|
17
|
+
const CustomBaseEntity_1 = require("../CustomBaseEntity");
|
|
18
|
+
let UserView = class UserView extends CustomBaseEntity_1.CustomBaseEntity {
|
|
18
19
|
};
|
|
19
20
|
exports.UserView = UserView;
|
|
20
21
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserView.js","sourceRoot":"","sources":["../../../dev-playground/entity/UserView.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"UserView.js","sourceRoot":"","sources":["../../../dev-playground/entity/UserView.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA+F;AAC/F,mCAAuD;AACvD,0CAAuC;AACvC,wBAA2C;AAC3C,0DAAuD;AAqBhD,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,mCAAgB;CAsB7C,CAAA;AAtBY,4BAAQ;AAGnB;IAFC,IAAA,oBAAU,GAAE;IACZ,IAAA,kBAAY,EAAC,EAAE,WAAW,EAAE,EAAE,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;;oCACnD;AAIZ;IAFC,IAAA,oBAAU,GAAE;IACZ,IAAA,kBAAY,EAAC,EAAE,WAAW,EAAE,EAAE,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;;sCAC3D;AAKd;IAHC,IAAA,oBAAU,GAAE;IACZ,IAAA,oBAAU,EAAC,CAAC,KAAe,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;IAC1C,IAAA,kBAAY,EAAC,EAAE,WAAW,EAAE,EAAE,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;;uCAChD;AAGf;IADC,IAAA,oBAAU,GAAE;;2CACK;AAGlB;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,MAAG,CAAC;8BACf,MAAG;qCAAC;AAGV;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,cAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;;0CAC/B;mBArBd,QAAQ;IAnBpB,IAAA,oBAAU,EAAC;QACV,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,CAAC,UAAsB,EAAE,EAAE,CACrC,UAAU;aACP,kBAAkB,EAAE;aACpB,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC;aACvB,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;aAC9B,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC;aAChC,SAAS,CAAC,gBAAgB,EAAE,WAAW,CAAC;aACxC,IAAI,CAAC,OAAI,EAAE,MAAM,CAAC;KACxB,CAAC;IACD,IAAA,kBAAY,EAAW;QACtB,UAAU,EAAE,UAAU;QACtB,WAAW,EAAE;YACX,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE;gBACf,MAAM,EAAE,IAAI;aACb;SACF;KACF,CAAC;GACW,QAAQ,CAsBpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../dev-playground/entity/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,4CAA0B;AAC1B,yCAAuB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../dev-playground/entity/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,4CAA0B;AAC1B,yCAAuB;AACvB,6CAA0B;AAC1B,gDAA6B"}
|
|
@@ -36,8 +36,16 @@ function convert() {
|
|
|
36
36
|
yield (0, promises_1.mkdir)("tmp/output", { recursive: true })
|
|
37
37
|
.catch(error => console.log(error));
|
|
38
38
|
yield (0, promises_1.writeFile)(`tmp/output/metadata-${Date.now()}.json`, JSON.stringify(metadata, null, 2));
|
|
39
|
-
data_source_1.AppDataSource.
|
|
40
|
-
|
|
39
|
+
data_source_1.AppDataSource.destroy();
|
|
40
|
+
if (!process.env.HASURA_URL) {
|
|
41
|
+
console.log('Done and done');
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const result = yield generator.applyMetadata({
|
|
45
|
+
hasuraUrl: process.env.HASURA_URL,
|
|
46
|
+
adminSecret: process.env.HASURA_GRAPHQL_ADMIN_SECRET
|
|
47
|
+
});
|
|
48
|
+
console.log(result);
|
|
41
49
|
});
|
|
42
50
|
}
|
|
43
51
|
data_source_1.AppDataSource.initialize()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasura.js","sourceRoot":"","sources":["../../dev-playground/hasura.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,6CAA8B;AAC9B,0CAA8C;AAC9C,gCAAyC;AACzC,kEAAqE;AACrE,+CAA6C;AAE7C,SAAe,OAAO;;QAClB,MAAM,SAAS,GAAG,IAAI,qBAAe,EAAE;aAClC,SAAS,CAAC;YACP,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,2BAAa;YACzB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;YAC5C,4BAA4B,EAAE,EAAE;SACnC,CAAC;aACD,UAAU,CAAC;YACR,2CAAuB;SAC1B,CAAC;aACD,qBAAqB,CAAC,IAAA,qBAAG,EAAA;;SAEzB,CAAC;aACD,iBAAiB,CAAC;QACf,gCAAgC;SACnC,CAAC,CAAA;QACN,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QAEzC,MAAM,IAAA,gBAAK,EAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;aACzC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,MAAM,IAAA,oBAAS,EACX,uBAAuB,IAAI,CAAC,GAAG,EAAE,OAAO,EACxC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CACpC,CAAA;QACD,2BAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"hasura.js","sourceRoot":"","sources":["../../dev-playground/hasura.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,6CAA8B;AAC9B,0CAA8C;AAC9C,gCAAyC;AACzC,kEAAqE;AACrE,+CAA6C;AAE7C,SAAe,OAAO;;QAClB,MAAM,SAAS,GAAG,IAAI,qBAAe,EAAE;aAClC,SAAS,CAAC;YACP,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,2BAAa;YACzB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;YAC5C,4BAA4B,EAAE,EAAE;SACnC,CAAC;aACD,UAAU,CAAC;YACR,2CAAuB;SAC1B,CAAC;aACD,qBAAqB,CAAC,IAAA,qBAAG,EAAA;;SAEzB,CAAC;aACD,iBAAiB,CAAC;QACf,gCAAgC;SACnC,CAAC,CAAA;QACN,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QAEzC,MAAM,IAAA,gBAAK,EAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;aACzC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,MAAM,IAAA,oBAAS,EACX,uBAAuB,IAAI,CAAC,GAAG,EAAE,OAAO,EACxC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CACpC,CAAA;QACD,2BAAa,CAAC,OAAO,EAAE,CAAC;QAExB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;YAC5B,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC;YACzC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;YACjC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA4B;SACxD,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC;CAAA;AAED,2BAAa,CAAC,UAAU,EAAE;KACrB,IAAI,CAAC,OAAO,CAAC;KACb,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;AAEvC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IAC7B,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;AACxC,CAAC"}
|
|
@@ -139,17 +139,34 @@ class MetadataBuilder {
|
|
|
139
139
|
* @returns The response of the Hasura instance.
|
|
140
140
|
*/
|
|
141
141
|
applyMetadata({ hasuraUrl, adminSecret }) {
|
|
142
|
+
var _a;
|
|
142
143
|
return __awaiter(this, void 0, void 0, function* () {
|
|
143
144
|
const { metadata } = yield this.getMetadata();
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
145
|
+
try {
|
|
146
|
+
const { data } = yield axios_1.default.post(`${hasuraUrl}/v1/metadata`, {
|
|
147
|
+
type: "replace_metadata",
|
|
148
|
+
args: metadata
|
|
149
|
+
}, {
|
|
150
|
+
headers: {
|
|
151
|
+
'X-Hasura-Admin-Secret': adminSecret
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
return data;
|
|
155
|
+
}
|
|
156
|
+
catch (e) {
|
|
157
|
+
if (e instanceof axios_1.AxiosError && ((_a = e.response) === null || _a === void 0 ? void 0 : _a.data)) {
|
|
158
|
+
// TODO: Add a better error display.
|
|
159
|
+
const error = new Error(e.stack);
|
|
160
|
+
const data = e.response.data;
|
|
161
|
+
// @ts-ignore
|
|
162
|
+
error.data = data;
|
|
163
|
+
if (data.internal)
|
|
164
|
+
// @ts-ignore
|
|
165
|
+
error.internal = data.internal;
|
|
166
|
+
throw error;
|
|
150
167
|
}
|
|
151
|
-
|
|
152
|
-
|
|
168
|
+
throw e;
|
|
169
|
+
}
|
|
153
170
|
});
|
|
154
171
|
}
|
|
155
172
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Metadata.js","sourceRoot":"","sources":["../../../src/builders/Metadata.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"Metadata.js","sourceRoot":"","sources":["../../../src/builders/Metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,10 +37,7 @@ function generatePermissions(dataSourceOptions, table, { entityOptions, columnMe
|
|
|
37
37
|
insert = {};
|
|
38
38
|
result.insert_permissions.push({
|
|
39
39
|
role: key,
|
|
40
|
-
permission: {
|
|
41
|
-
columns: columnNames(columnMetadata, key, "insert"),
|
|
42
|
-
check: (0, whereClause_1.convertWhereClause)(table, insert.check)
|
|
43
|
-
}
|
|
40
|
+
permission: Object.assign(Object.assign({ columns: columnNames(columnMetadata, key, "insert") }, (insert.check ? { check: (0, whereClause_1.convertWhereClause)(table, insert.check) } : {})), (insert.set ? { set: insert.set } : {}))
|
|
44
41
|
});
|
|
45
42
|
}
|
|
46
43
|
if (myDelete) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/mappers/permissions.ts"],"names":[],"mappings":";;;AAGA,+CAAkD;AAMlD,SAAgB,mBAAmB,CAC/B,iBAAoC,EACpC,KAA6B,EAC7B,EAAE,aAAa,EAAE,cAAc,EAA0C;IAGzE,MAAM,MAAM,GAAqB;QAC7B,kBAAkB,EAAE,EAAE;QACtB,kBAAkB,EAAE,EAAE;QACtB,kBAAkB,EAAE,EAAE;QACtB,kBAAkB,EAAE,EAAE;KACzB,CAAA;IACD,IAAI,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,CAAA;QAC3B,OAAO,MAAM,CAAC;IAElB,MAAM,EAAE,WAAW,EAAE,GAAG,aAAa,CAAA;IAErC,KAAK,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAA;QAEpE,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,GAAG,EAAE,CAAA;YAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,iBAAiB,CAAC,4BAA4B,CAAA;YAC5E,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC;gBAC3B,IAAI,EAAE,GAAG;gBACT,UAAU,kBACN,OAAO,EAAE,WAAW,CAAC,cAAc,EAAE,GAAG,EAAE,QAAQ,CAAC,EACnD,MAAM,EAAE,IAAA,gCAAkB,EAAS,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAC3D,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC9B;aACJ,CAAC,CAAA;QACN,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,GAAG,EAAE,CAAA;YAChC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC;gBAC3B,IAAI,EAAE,GAAG;gBACT,UAAU,gCACN,OAAO,EAAE,WAAW,CAAC,cAAc,EAAE,GAAG,EAAE,QAAQ,CAAC,EACnD,MAAM,EAAE,IAAA,gCAAkB,EAAS,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAC3D,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAA,gCAAkB,EAAS,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAChF,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC7C;aACJ,CAAC,CAAA;QACN,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,GAAG,EAAE,CAAA;YAChC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC;gBAC3B,IAAI,EAAE,GAAG;gBACT,UAAU,
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/mappers/permissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,14 +4,11 @@ exports.generateRelationships = exports.generateRelationship = void 0;
|
|
|
4
4
|
function generateRelationship(relation) {
|
|
5
5
|
const owningRelation = relation.isOwning ?
|
|
6
6
|
relation : relation.inverseRelation;
|
|
7
|
-
if (!owningRelation
|
|
8
|
-
throw new Error('
|
|
9
|
-
'Also its possible that you have missed to set inverse side of the relation.');
|
|
7
|
+
if (!owningRelation)
|
|
8
|
+
throw new Error('Unable to find owning relation. Probably you have missed to set inverse side of the relation.');
|
|
10
9
|
const columns = owningRelation.joinColumns.map(column => column.databaseName);
|
|
11
|
-
//
|
|
12
|
-
|
|
13
|
-
// @ts-ignore is that okay?
|
|
14
|
-
const schema = owningRelation.target.dataSource.options.schema || 'public';
|
|
10
|
+
// The schema doesn't defined for views by default but we can assume it's public
|
|
11
|
+
const schema = owningRelation.entityMetadata.schema || 'public';
|
|
15
12
|
const tableType = owningRelation.entityMetadata.tableType;
|
|
16
13
|
if (tableType === "regular" && relation.isOwning)
|
|
17
14
|
return {
|
|
@@ -58,18 +55,26 @@ function generateRelationships(relations) {
|
|
|
58
55
|
// sort to be consistent with hasura
|
|
59
56
|
relations.sort((a, b) => a.propertyName.localeCompare(b.propertyName));
|
|
60
57
|
for (const relation of relations) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const relationship = generateRelationship(relation);
|
|
65
|
-
// @ts-ignore dont want to play with types for now
|
|
66
|
-
result[kind].push(relationship);
|
|
67
|
-
}
|
|
68
|
-
catch (e) {
|
|
69
|
-
console.warn(e);
|
|
58
|
+
if (relation.isManyToMany) {
|
|
59
|
+
manyToManyWarning();
|
|
60
|
+
continue;
|
|
70
61
|
}
|
|
62
|
+
const kind = relation.relationType.endsWith('-to-one') ?
|
|
63
|
+
'object_relationships' : 'array_relationships';
|
|
64
|
+
const relationship = generateRelationship(relation);
|
|
65
|
+
// @ts-ignore dont want to play with types for now
|
|
66
|
+
result[kind].push(relationship);
|
|
71
67
|
}
|
|
72
68
|
return result;
|
|
73
69
|
}
|
|
74
70
|
exports.generateRelationships = generateRelationships;
|
|
71
|
+
let isManyToManyWarningShown = false;
|
|
72
|
+
function manyToManyWarning() {
|
|
73
|
+
if (isManyToManyWarningShown)
|
|
74
|
+
return;
|
|
75
|
+
console.warn(new Error('Typeorm-hasura does not support many-to-many relations yet, so we will skip such relationships. ' +
|
|
76
|
+
'Also its possible that you have missed to set inverse side of the relation. ' +
|
|
77
|
+
'If you want to help us to support many-to-many relations, please create an issue on github.'));
|
|
78
|
+
isManyToManyWarningShown = true;
|
|
79
|
+
}
|
|
75
80
|
//# sourceMappingURL=relationships.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationships.js","sourceRoot":"","sources":["../../../src/mappers/relationships.ts"],"names":[],"mappings":";;;AASA,SAAgB,oBAAoB,CAAC,QAAqD;IACtF,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;IAExC,IAAI,CAAC,cAAc
|
|
1
|
+
{"version":3,"file":"relationships.js","sourceRoot":"","sources":["../../../src/mappers/relationships.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,9 +10,9 @@ function generateTable(dataSourceOptions, table) {
|
|
|
10
10
|
const entityWorkspace = internalStorage_1.internalStorage.getEntityWorkspace(table.target);
|
|
11
11
|
const metadata = Object.assign(Object.assign({ table: {
|
|
12
12
|
name: table.tableName,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
schema: table.schema
|
|
14
|
+
|| ('schema' in table.connection.options && table.connection.options.schema)
|
|
15
|
+
|| 'public',
|
|
16
16
|
}, configuration: (0, tableConfiguration_1.generateTableConfiguration)(table, entityWorkspace) }, (0, relationships_1.generateRelationships)(table.relations)), (0, permissions_1.generatePermissions)(dataSourceOptions, table, entityWorkspace));
|
|
17
17
|
// be consistent with hasura
|
|
18
18
|
if (!((_a = metadata.object_relationships) === null || _a === void 0 ? void 0 : _a.length))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/mappers/table.ts"],"names":[],"mappings":";;;AAEA,mDAAwD;AACxD,6DAAkE;AAElE,+CAAoD;AACpD,wDAAqD;AAErD,SAAgB,aAAa,CACzB,iBAAoC,EACpC,KAA6B;;IAE7B,MAAM,eAAe,GAAG,iCAAe,CAAC,kBAAkB,CAAS,KAAK,CAAC,MAAM,CAAC,CAAC;IAEjF,MAAM,QAAQ,iCACV,KAAK,EAAE;YACH,IAAI,EAAE,KAAK,CAAC,SAAS;YACrB,
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/mappers/table.ts"],"names":[],"mappings":";;;AAEA,mDAAwD;AACxD,6DAAkE;AAElE,+CAAoD;AACpD,wDAAqD;AAErD,SAAgB,aAAa,CACzB,iBAAoC,EACpC,KAA6B;;IAE7B,MAAM,eAAe,GAAG,iCAAe,CAAC,kBAAkB,CAAS,KAAK,CAAC,MAAM,CAAC,CAAC;IAEjF,MAAM,QAAQ,iCACV,KAAK,EAAE;YACH,IAAI,EAAE,KAAK,CAAC,SAAS;YACrB,MAAM,EAAE,KAAK,CAAC,MAAM;mBACb,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;mBACzE,QAAQ;SAClB,EACD,aAAa,EAAE,IAAA,+CAA0B,EAAC,KAAK,EAAE,eAAe,CAAC,IAC9D,IAAA,qCAAqB,EAAC,KAAK,CAAC,SAAS,CAAC,GACtC,IAAA,iCAAmB,EAAC,iBAAiB,EAAE,KAAK,EAAE,eAAe,CAAC,CACpE,CAAA;IAED,4BAA4B;IAC5B,IAAI,CAAC,CAAA,MAAA,QAAQ,CAAC,oBAAoB,0CAAE,MAAM,CAAA;QAAE,OAAO,QAAQ,CAAC,oBAAoB,CAAC;IACjF,IAAI,CAAC,CAAA,MAAA,QAAQ,CAAC,mBAAmB,0CAAE,MAAM,CAAA;QAAE,OAAO,QAAQ,CAAC,mBAAmB,CAAC;IAC/E,IAAI,CAAC,CAAA,MAAA,QAAQ,CAAC,kBAAkB,0CAAE,MAAM,CAAA;QAAE,OAAO,QAAQ,CAAC,kBAAkB,CAAC;IAC7E,IAAI,CAAC,CAAA,MAAA,QAAQ,CAAC,kBAAkB,0CAAE,MAAM,CAAA;QAAE,OAAO,QAAQ,CAAC,kBAAkB,CAAC;IAC7E,IAAI,CAAC,CAAA,MAAA,QAAQ,CAAC,kBAAkB,0CAAE,MAAM,CAAA;QAAE,OAAO,QAAQ,CAAC,kBAAkB,CAAC;IAC7E,IAAI,CAAC,CAAA,MAAA,QAAQ,CAAC,kBAAkB,0CAAE,MAAM,CAAA;QAAE,OAAO,QAAQ,CAAC,kBAAkB,CAAC;IAE7E,OAAO,QAAQ,CAAC;AACpB,CAAC;AA3BD,sCA2BC"}
|
|
@@ -5,10 +5,13 @@ export interface DataSourceOptions {
|
|
|
5
5
|
dataSource: TypeORM.DataSource;
|
|
6
6
|
customizationNative?: Hasura.SourceCustomization;
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* Override database url instead of url from data source
|
|
9
|
+
*
|
|
10
|
+
* Should refer to the database that Hasura will use to connect to the database from inside the container of Hasura.
|
|
11
|
+
*
|
|
12
|
+
* Can omit if you are using the same database for Hasura and TypeORM.
|
|
9
13
|
*
|
|
10
14
|
* @example `postgres://username:password@host:5432/database`
|
|
11
|
-
* @deprecated please rely on the `dataSource` parameter instead
|
|
12
15
|
*/
|
|
13
16
|
databaseUrl?: string;
|
|
14
17
|
/**
|
|
@@ -4,6 +4,12 @@ export interface BasePermissionRule<Entity extends Object> {
|
|
|
4
4
|
}
|
|
5
5
|
export interface InsertPermissionRule<Entity extends Object> {
|
|
6
6
|
check?: Where<Entity>;
|
|
7
|
+
/**
|
|
8
|
+
* Column presets
|
|
9
|
+
*
|
|
10
|
+
* if its a plain property it will be set to the value, but in another case you cannot use the value of the property
|
|
11
|
+
*/
|
|
12
|
+
set?: Partial<Record<keyof Entity, unknown>>;
|
|
7
13
|
}
|
|
8
14
|
export interface SelectPermissionRule<Entity extends Object> {
|
|
9
15
|
where?: Where<Entity>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typeorm-hasura",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.18",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"hasura",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"types": "./dist/src/index.d.ts",
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|
|
13
|
+
"src",
|
|
13
14
|
"LICENSE",
|
|
14
15
|
"README.md"
|
|
15
16
|
],
|
|
@@ -29,11 +30,11 @@
|
|
|
29
30
|
"typeorm": "typeorm-ts-node-esm",
|
|
30
31
|
"test": "jest",
|
|
31
32
|
"test:watch": "jest --watch",
|
|
32
|
-
"play:gen": "npx env-cmd npx typeorm-ts-node-esm migration:generate ./dev-playground/migration/next -d ./dev-playground/data-source",
|
|
33
|
-
"play:up": "npx env-cmd npx typeorm-ts-node-esm
|
|
34
|
-
"play:down": "npx env-cmd npx typeorm-ts-node-esm
|
|
35
|
-
"play:start": "npx env-cmd ts-node dev-playground/index.ts",
|
|
36
|
-
"play:
|
|
33
|
+
"play:gen": "npx env-cmd --silent npx typeorm-ts-node-esm migration:generate ./dev-playground/migration/next -d ./dev-playground/data-source",
|
|
34
|
+
"play:up": "npx env-cmd --silent npx typeorm-ts-node-esm migration:run -d ./dev-playground/data-source",
|
|
35
|
+
"play:down": "npx env-cmd --silent npx typeorm-ts-node-esm migration:revert -d ./dev-playground/data-source",
|
|
36
|
+
"play:start": "npx env-cmd --silent ts-node dev-playground/index.ts",
|
|
37
|
+
"play:hasura:apply": "npx env-cmd --silent ts-node dev-playground/hasura.ts"
|
|
37
38
|
},
|
|
38
39
|
"author": {
|
|
39
40
|
"name": "Utyfua",
|
|
@@ -44,7 +45,7 @@
|
|
|
44
45
|
"axios": "^1.3.5",
|
|
45
46
|
"graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0",
|
|
46
47
|
"graphql-tag": "^2.0.0",
|
|
47
|
-
"hasura-metadata-types": "^2.
|
|
48
|
+
"hasura-metadata-types": "^2.22.1",
|
|
48
49
|
"lodash.snakecase": "^4.1.1"
|
|
49
50
|
},
|
|
50
51
|
"peerDependencies": {
|
package/readme.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
# typeorm-hasura
|
|
1
|
+
# typeorm-hasura
|
|
2
2
|
|
|
3
3
|
`typeorm-hasura` is a JavaScript library that generates Hasura metadata from TypeORM entities.
|
|
4
|
+
|
|
4
5
|
This library is designed to automate the process of creating Hasura metadata,
|
|
5
6
|
making it easier to manage complex database schemas and permissions when using Hasura with TypeORM.
|
|
6
7
|
|
|
@@ -11,6 +12,12 @@ making it easier to manage complex database schemas and permissions when using H
|
|
|
11
12
|
- Add custom actions and inherited roles
|
|
12
13
|
- Automatic handling of relationships between entities
|
|
13
14
|
|
|
15
|
+
> [!WARNING]
|
|
16
|
+
> The library does not support ManyToMany relationships.
|
|
17
|
+
|
|
18
|
+
> [!NOTE]
|
|
19
|
+
> The library was tested with Hasura v2 and TypeORM v0.3 with PostgreSQL only.
|
|
20
|
+
|
|
14
21
|
## Installation
|
|
15
22
|
|
|
16
23
|
```bash
|
|
@@ -60,6 +67,12 @@ Here's a step-by-step guide on how to use typeorm-hasura:
|
|
|
60
67
|
}
|
|
61
68
|
```
|
|
62
69
|
|
|
70
|
+
> [!IMPORTANT]
|
|
71
|
+
> :warning:
|
|
72
|
+
> `databaseUrl` **should refer to the database that Hasura will use to connect to the database from inside the container of Hasura.**
|
|
73
|
+
>
|
|
74
|
+
> You can omit `databaseUrl` if you are using the same database for Hasura and TypeORM.
|
|
75
|
+
|
|
63
76
|
3. Save metadata:
|
|
64
77
|
|
|
65
78
|
a. Save metadata to a file:
|
|
@@ -80,7 +93,7 @@ Here's a step-by-step guide on how to use typeorm-hasura:
|
|
|
80
93
|
// example: https://example.com
|
|
81
94
|
// please do not put /v1/graphql at the end of the url
|
|
82
95
|
hasuraUrl: process.env.HASURA_URL,
|
|
83
|
-
adminSecret : process.env.
|
|
96
|
+
adminSecret : process.env.HASURA_GRAPHQL_ADMIN_SECRET
|
|
84
97
|
})
|
|
85
98
|
console.log(result)
|
|
86
99
|
```
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type * as Hasura from "hasura-metadata-types";
|
|
2
|
+
import { getGraphQLDefinitions } from "../mappers/graphql";
|
|
3
|
+
import { ActionBuildResult, ActionCustomMetadataV1 } from "../types";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The builder for the actions.
|
|
7
|
+
*/
|
|
8
|
+
export class ActionBuilder {
|
|
9
|
+
/**
|
|
10
|
+
* Builds the actions from the custom metadata.
|
|
11
|
+
*
|
|
12
|
+
* @param customMetadata The custom metadata.
|
|
13
|
+
* @returns The actions.
|
|
14
|
+
*
|
|
15
|
+
* @note This method is experimental and might change in the future. Also have nothing in common with Hasura 1.x.
|
|
16
|
+
*/
|
|
17
|
+
static buildV1(customMetadata: ActionCustomMetadataV1): ActionBuildResult {
|
|
18
|
+
const defs = getGraphQLDefinitions(customMetadata.definitionType);
|
|
19
|
+
if (defs.baseActions.length !== 1)
|
|
20
|
+
throw new Error(`Expected exactly one base action, got ${defs.baseActions.length}`);
|
|
21
|
+
const [baseAction] = defs.baseActions;
|
|
22
|
+
const action: Hasura.Action = {
|
|
23
|
+
name: baseAction.name,
|
|
24
|
+
comment: customMetadata.comment,
|
|
25
|
+
permissions: customMetadata.permissions,
|
|
26
|
+
definition: {
|
|
27
|
+
...baseAction.definition,
|
|
28
|
+
forward_client_headers: customMetadata.forwardClientHeaders || false,
|
|
29
|
+
handler: customMetadata.handler,
|
|
30
|
+
...customMetadata.nativeDefinition,
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
return {
|
|
34
|
+
actions: [action],
|
|
35
|
+
custom_types: defs.custom_types,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|