typeorm-hasura 0.0.13 → 0.0.14

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.
@@ -34,19 +34,20 @@ function generatePermissions(dataSourceOptions, table, { entityOptions, columnMe
34
34
  role: key,
35
35
  permission: {
36
36
  columns: columnNames(columnMetadata, key, "update"),
37
- filter: (0, whereClause_1.convertWhereClause)(table, where, update.where)
37
+ filter: (0, whereClause_1.convertWhereClause)(table, where, update.where),
38
+ check: (0, whereClause_1.convertWhereClause)(table, update.check),
39
+ set: update.set
38
40
  }
39
41
  });
40
42
  }
41
43
  if (insert) {
42
44
  if (insert === true)
43
45
  insert = {};
44
- if (insert.where)
45
- throw new Error("u can not select while inserting something");
46
46
  result.insert_permissions.push({
47
47
  role: key,
48
48
  permission: {
49
49
  columns: columnNames(columnMetadata, key, "insert"),
50
+ check: (0, whereClause_1.convertWhereClause)(table, insert.check)
50
51
  }
51
52
  });
52
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/mappers/permissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/mappers/permissions.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ColumnMetadata } from "./Column";
2
2
  import { UserActionType, UserRoleName } from "./base";
3
- import { BasePermissionRule, SelectPermissionRule } from "./permissions";
3
+ import { BasePermissionRule, InsertPermissionRule, SelectPermissionRule, UpdatePermissionRule } from "./permissions";
4
4
  import { Where } from "./whereClause";
5
5
  export type EntityTarget = any;
6
6
  export interface EntityRootField {
@@ -19,9 +19,11 @@ export type Permissions<Entity extends Object> = {
19
19
  * append where clause to all actions
20
20
  */
21
21
  where?: Where<Entity>;
22
+ insert?: InsertPermissionRule<Entity> | boolean;
22
23
  select?: SelectPermissionRule<Entity> | boolean;
24
+ update?: UpdatePermissionRule<Entity> | boolean;
23
25
  } & {
24
- [action in Exclude<UserActionType, 'select'>]?: BasePermissionRule<Entity> | boolean;
26
+ [action in Exclude<UserActionType, 'select' | 'insert' | 'update'>]?: BasePermissionRule<Entity> | boolean;
25
27
  };
26
28
  };
27
29
  export interface EntityOptions<Entity extends Object = Object> {
@@ -2,7 +2,11 @@ import { Where } from "./whereClause";
2
2
  export interface BasePermissionRule<Entity extends Object> {
3
3
  where?: Where<Entity>;
4
4
  }
5
- export interface SelectPermissionRule<Entity extends Object> extends BasePermissionRule<Entity> {
5
+ export interface InsertPermissionRule<Entity extends Object> {
6
+ check?: Where<Entity>;
7
+ }
8
+ export interface SelectPermissionRule<Entity extends Object> {
9
+ where?: Where<Entity>;
6
10
  /**
7
11
  * limit the number of rows returned by the query(select action only)
8
12
  */
@@ -12,3 +16,19 @@ export interface SelectPermissionRule<Entity extends Object> extends BasePermiss
12
16
  */
13
17
  allowAggregations?: boolean;
14
18
  }
19
+ export interface UpdatePermissionRule<Entity extends Object> {
20
+ /**
21
+ * Pre-update check condition
22
+ */
23
+ where?: Where<Entity>;
24
+ /**
25
+ * Post-update check condition
26
+ */
27
+ check?: Where<Entity>;
28
+ /**
29
+ * Column presets
30
+ *
31
+ * if its a plain property it will be set to the value, but in another case you cannot use the value of the property
32
+ */
33
+ set?: Partial<Record<keyof Entity, unknown>>;
34
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typeorm-hasura",
3
- "version": "0.0.13",
3
+ "version": "0.0.14",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "hasura",