@venizia/ignis 0.0.7-14 → 0.0.7-15

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.
@@ -2,4 +2,5 @@ export * from './abstract';
2
2
  export * from './default-crud';
3
3
  export * from './persistable';
4
4
  export * from './readable';
5
+ export * from './soft-deletable';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/base/repositories/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/base/repositories/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
@@ -18,4 +18,5 @@ __exportStar(require("./abstract"), exports);
18
18
  __exportStar(require("./default-crud"), exports);
19
19
  __exportStar(require("./persistable"), exports);
20
20
  __exportStar(require("./readable"), exports);
21
+ __exportStar(require("./soft-deletable"), exports);
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/base/repositories/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,iDAA+B;AAC/B,gDAA8B;AAC9B,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/base/repositories/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,iDAA+B;AAC/B,gDAA8B;AAC9B,6CAA2B;AAC3B,mDAAiC"}
@@ -0,0 +1,140 @@
1
+ import { IdType, TTableInsert, TTableObject, TTableSchemaWithId } from '../../../base/models';
2
+ import { TNullable } from '@venizia/ignis-helpers';
3
+ import { AnyPgColumn } from 'drizzle-orm/pg-core';
4
+ import { IExtraOptions, TCount, TFilter, TWhere } from '../common';
5
+ import { DefaultCRUDRepository } from './default-crud';
6
+ export type TDeletedAtColumn = AnyPgColumn<{
7
+ data: Date | null;
8
+ }>;
9
+ export type TSoftDeletableTableSchema = TTableSchemaWithId & {
10
+ deletedAt: TDeletedAtColumn;
11
+ };
12
+ /**
13
+ * Soft-deletable repository that overrides delete operations to set deletedAt timestamp
14
+ * instead of physically removing records from the database.
15
+ *
16
+ * Models using this repository should:
17
+ * - Have a `deletedAt` column (Date | null)
18
+ * - Set `defaultFilter: { where: { deletedAt: null } }` in @model settings
19
+ * - Include `deletedAt` in `hiddenProperties` if you don't want to expose it
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * @model({
24
+ * settings: {
25
+ * hiddenProperties: ['deletedAt'],
26
+ * defaultFilter: { where: { deletedAt: null } },
27
+ * },
28
+ * })
29
+ * export class Category extends BaseEntity<typeof Category.schema> {
30
+ * static schema = pgTable('Category', {
31
+ * ...withTimestamps(),
32
+ * ...withSoftDelete(),
33
+ * });
34
+ * }
35
+ *
36
+ * @repository({ dataSource: PostgresDataSource, model: Category })
37
+ * export class CategoryRepository extends SoftDeletableRepository<typeof Category.schema> {}
38
+ * ```
39
+ */
40
+ export declare class SoftDeletableRepository<EntitySchema extends TSoftDeletableTableSchema = TSoftDeletableTableSchema, DataObject extends TTableObject<EntitySchema> = TTableObject<EntitySchema>, PersistObject extends TTableInsert<EntitySchema> = TTableInsert<EntitySchema>, ExtraOptions extends IExtraOptions = IExtraOptions> extends DefaultCRUDRepository<EntitySchema, DataObject, PersistObject, ExtraOptions> {
41
+ findById<R = DataObject>(opts: {
42
+ id: IdType;
43
+ filter?: Omit<TFilter<DataObject>, 'where'>;
44
+ options?: ExtraOptions & {
45
+ isStrict?: false;
46
+ };
47
+ }): Promise<TNullable<R>>;
48
+ findById<R = DataObject>(opts: {
49
+ id: IdType;
50
+ filter?: Omit<TFilter<DataObject>, 'where'>;
51
+ options?: ExtraOptions & {
52
+ isStrict?: true;
53
+ };
54
+ }): Promise<R>;
55
+ deleteById(opts: {
56
+ id: IdType;
57
+ options: ExtraOptions & {
58
+ shouldReturn: false;
59
+ shouldHardDelete?: boolean;
60
+ };
61
+ }): Promise<TCount & {
62
+ data: undefined | null;
63
+ }>;
64
+ deleteById<R = DataObject>(opts: {
65
+ id: IdType;
66
+ options?: ExtraOptions & {
67
+ shouldReturn?: true;
68
+ shouldHardDelete?: boolean;
69
+ };
70
+ }): Promise<TCount & {
71
+ data: R;
72
+ }>;
73
+ deleteAll(opts: {
74
+ where?: TWhere<DataObject>;
75
+ options: ExtraOptions & {
76
+ shouldReturn: false;
77
+ force?: boolean;
78
+ shouldHardDelete?: boolean;
79
+ };
80
+ }): Promise<TCount & {
81
+ data: undefined | null;
82
+ }>;
83
+ deleteAll<R = DataObject>(opts: {
84
+ where?: TWhere<DataObject>;
85
+ options?: ExtraOptions & {
86
+ shouldReturn?: true;
87
+ force?: boolean;
88
+ shouldHardDelete?: boolean;
89
+ };
90
+ }): Promise<TCount & {
91
+ data: Array<R>;
92
+ }>;
93
+ deleteBy(opts: {
94
+ where: TWhere<DataObject>;
95
+ options: ExtraOptions & {
96
+ shouldReturn: false;
97
+ force?: boolean;
98
+ shouldHardDelete?: boolean;
99
+ };
100
+ }): Promise<TCount & {
101
+ data: undefined | null;
102
+ }>;
103
+ deleteBy<R = DataObject>(opts: {
104
+ where: TWhere<DataObject>;
105
+ options?: ExtraOptions & {
106
+ shouldReturn?: true;
107
+ force?: boolean;
108
+ shouldHardDelete?: boolean;
109
+ };
110
+ }): Promise<TCount & {
111
+ data: Array<R>;
112
+ }>;
113
+ restoreById<R = DataObject>(opts: {
114
+ id: IdType;
115
+ options?: ExtraOptions & {
116
+ shouldReturn?: boolean;
117
+ };
118
+ }): Promise<TCount & {
119
+ data: TNullable<R>;
120
+ }>;
121
+ restoreAll<R = DataObject>(opts: {
122
+ where?: TWhere<DataObject>;
123
+ options?: ExtraOptions & {
124
+ shouldReturn?: boolean;
125
+ force?: boolean;
126
+ };
127
+ }): Promise<TCount & {
128
+ data: TNullable<Array<R>>;
129
+ }>;
130
+ restoreBy<R = DataObject>(opts: {
131
+ where: TWhere<DataObject>;
132
+ options?: ExtraOptions & {
133
+ shouldReturn?: boolean;
134
+ force?: boolean;
135
+ };
136
+ }): Promise<TCount & {
137
+ data: TNullable<Array<R>>;
138
+ }>;
139
+ }
140
+ //# sourceMappingURL=soft-deletable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soft-deletable.d.ts","sourceRoot":"","sources":["../../../../src/base/repositories/core/soft-deletable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SoftDeletableRepository = void 0;
4
+ const ignis_helpers_1 = require("@venizia/ignis-helpers");
5
+ const default_crud_1 = require("./default-crud");
6
+ /**
7
+ * Soft-deletable repository that overrides delete operations to set deletedAt timestamp
8
+ * instead of physically removing records from the database.
9
+ *
10
+ * Models using this repository should:
11
+ * - Have a `deletedAt` column (Date | null)
12
+ * - Set `defaultFilter: { where: { deletedAt: null } }` in @model settings
13
+ * - Include `deletedAt` in `hiddenProperties` if you don't want to expose it
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * @model({
18
+ * settings: {
19
+ * hiddenProperties: ['deletedAt'],
20
+ * defaultFilter: { where: { deletedAt: null } },
21
+ * },
22
+ * })
23
+ * export class Category extends BaseEntity<typeof Category.schema> {
24
+ * static schema = pgTable('Category', {
25
+ * ...withTimestamps(),
26
+ * ...withSoftDelete(),
27
+ * });
28
+ * }
29
+ *
30
+ * @repository({ dataSource: PostgresDataSource, model: Category })
31
+ * export class CategoryRepository extends SoftDeletableRepository<typeof Category.schema> {}
32
+ * ```
33
+ */
34
+ class SoftDeletableRepository extends default_crud_1.DefaultCRUDRepository {
35
+ async findById(opts) {
36
+ const result = await super.findById(opts);
37
+ if (opts.options?.isStrict && !result) {
38
+ throw (0, ignis_helpers_1.getError)({
39
+ message: `[${this.constructor.name}][findById] Entity with id ${opts.id} not found`,
40
+ statusCode: ignis_helpers_1.HTTP.ResultCodes.RS_4.NotFound,
41
+ });
42
+ }
43
+ return result;
44
+ }
45
+ async deleteById(opts) {
46
+ if (opts.options?.shouldHardDelete) {
47
+ return super.deleteById(opts);
48
+ }
49
+ return this.updateById({
50
+ id: opts.id,
51
+ data: { deletedAt: new Date() },
52
+ options: opts.options,
53
+ });
54
+ }
55
+ deleteAll(opts) {
56
+ if (opts.options?.shouldHardDelete) {
57
+ return super.deleteAll(opts);
58
+ }
59
+ return this.updateAll({
60
+ where: opts.where ?? {},
61
+ data: { deletedAt: new Date() },
62
+ options: opts.options,
63
+ });
64
+ }
65
+ deleteBy(opts) {
66
+ if (opts.options?.shouldHardDelete) {
67
+ return super.deleteBy(opts);
68
+ }
69
+ return this.updateAll({
70
+ where: opts.where,
71
+ data: { deletedAt: new Date() },
72
+ options: opts.options,
73
+ });
74
+ }
75
+ // ---------------------------------------------------------------------------
76
+ // Restore Operations
77
+ // ---------------------------------------------------------------------------
78
+ async restoreById(opts) {
79
+ const { shouldReturn = true, ...restOptions } = opts.options ?? {};
80
+ return this.updateById({
81
+ id: opts.id,
82
+ data: { deletedAt: null },
83
+ options: { ...restOptions, shouldReturn, shouldSkipDefaultFilter: true },
84
+ });
85
+ }
86
+ async restoreAll(opts) {
87
+ const { shouldReturn = true, force, ...restOptions } = opts.options ?? {};
88
+ return this.updateAll({
89
+ where: opts.where ?? {},
90
+ data: { deletedAt: null },
91
+ options: { ...restOptions, shouldReturn, force, shouldSkipDefaultFilter: true },
92
+ });
93
+ }
94
+ async restoreBy(opts) {
95
+ return this.restoreAll(opts);
96
+ }
97
+ }
98
+ exports.SoftDeletableRepository = SoftDeletableRepository;
99
+ //# sourceMappingURL=soft-deletable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soft-deletable.js","sourceRoot":"","sources":["../../../../src/base/repositories/core/soft-deletable.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,8 @@ export interface IDrizzleCasbinAdapterOptions {
19
19
  entities: IDrizzleCasbinEntities;
20
20
  }
21
21
  export declare class DrizzleCasbinAdapter extends BaseFilteredAdapter<IDrizzleCasbinEntities> {
22
- private connector;
22
+ private dataSource;
23
+ private get connector();
23
24
  constructor(opts: IDrizzleCasbinAdapterOptions);
24
25
  protected buildDirectPolicies(opts: {
25
26
  filter: ICasbinPolicyFilter;
@@ -1 +1 @@
1
- {"version":3,"file":"drizzle-casbin.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/adapters/drizzle-casbin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,oBAAoB,CAAC;AAGhE,OAAO,EACL,mBAAmB,EACnB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EAEzB,MAAM,iBAAiB,CAAC;AACzB,MAAM,WAAW,sBAAuB,SAAQ,4BAA4B;IAC1E,UAAU,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,gBAAgB,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE;AAED,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,WAAW,CAAC;IACxB,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAID,qBAAa,oBAAqB,SAAQ,mBAAmB,CAAC,sBAAsB,CAAC;IACnF,OAAO,CAAC,SAAS,CAAgB;gBAErB,IAAI,EAAE,4BAA4B;cAO9B,mBAAmB,CAAC,IAAI,EAAE;QACxC,MAAM,EAAE,mBAAmB,CAAC;QAC5B,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAiCL,kBAAkB,CAAC,IAAI,EAAE;QACvC,MAAM,EAAE,mBAAmB,CAAC;KAC7B,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,CAAC;cAqC9C,iBAAiB,CAAC,IAAI,EAAE;QACtC,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;QAC7B,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAoCtB"}
1
+ {"version":3,"file":"drizzle-casbin.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/adapters/drizzle-casbin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,oBAAoB,CAAC;AAGhE,OAAO,EACL,mBAAmB,EACnB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EAEzB,MAAM,iBAAiB,CAAC;AACzB,MAAM,WAAW,sBAAuB,SAAQ,4BAA4B;IAC1E,UAAU,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,gBAAgB,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE;AAED,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,WAAW,CAAC;IACxB,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAID,qBAAa,oBAAqB,SAAQ,mBAAmB,CAAC,sBAAsB,CAAC;IACnF,OAAO,CAAC,UAAU,CAAc;IAEhC,OAAO,KAAK,SAAS,GAEpB;gBAEW,IAAI,EAAE,4BAA4B;cAO9B,mBAAmB,CAAC,IAAI,EAAE;QACxC,MAAM,EAAE,mBAAmB,CAAC;QAC5B,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAiCL,kBAAkB,CAAC,IAAI,EAAE;QACvC,MAAM,EAAE,mBAAmB,CAAC;KAC7B,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,CAAC;cAqC9C,iBAAiB,CAAC,IAAI,EAAE;QACtC,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;QAC7B,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAoCtB"}
@@ -6,9 +6,12 @@ const common_1 = require("../common");
6
6
  const base_filtered_1 = require("./base-filtered");
7
7
  // Drizzle Casbin Adapter — read-only FilteredAdapter using raw SQL queries
8
8
  class DrizzleCasbinAdapter extends base_filtered_1.BaseFilteredAdapter {
9
+ get connector() {
10
+ return this.dataSource.connector;
11
+ }
9
12
  constructor(opts) {
10
13
  super({ scope: DrizzleCasbinAdapter.name, entities: opts.entities });
11
- this.connector = opts.dataSource.connector;
14
+ this.dataSource = opts.dataSource;
12
15
  }
13
16
  // Query builders
14
17
  async buildDirectPolicies(opts) {
@@ -1 +1 @@
1
- {"version":3,"file":"drizzle-casbin.js","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/adapters/drizzle-casbin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drizzle-casbin.js","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/adapters/drizzle-casbin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@venizia/ignis",
3
- "version": "0.0.7-14",
3
+ "version": "0.0.7-15",
4
4
  "description": "High-performance TypeScript server infrastructure combining LoopBack 4 enterprise architecture (decorator-based DI, repository pattern, component system) with Hono speed (~140k req/s). Features auto-generated OpenAPI docs, Drizzle ORM type-safe SQL, JWT/Basic authentication, Casbin authorization, convention-based bootstrapping, and pluggable components for health checks, Swagger UI, mail, Socket.IO, and static assets. Built for Bun and Node.js.",
5
5
  "keywords": [
6
6
  "access-control",