@codenameryuu/adonis-lucid-soft-deletes 1.8.0 → 2.0.0

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/README.md CHANGED
@@ -4,24 +4,24 @@ This addon adds the functionality to soft deletes Lucid Models through the `dele
4
4
 
5
5
  ## Requirement
6
6
 
7
- - Adonis Js 7
8
- - Lucid 22 or higher
7
+ * Adonis Js 7
8
+ * Lucid 22 or higher
9
9
 
10
10
  ## Installation
11
11
 
12
- - Install the package
12
+ * Install the package
13
13
 
14
14
  ```bash
15
15
  yarn add @codenameryuu/adonis-lucid-soft-deletes
16
16
  ```
17
17
 
18
- - Configure the package
18
+ * Configure the package
19
19
 
20
20
  ```bash
21
21
  node ace configure @codenameryuu/adonis-lucid-soft-deletes
22
22
  ```
23
23
 
24
- - Make sure to register the provider inside `adonisrc.ts` file.
24
+ * Make sure to register the provider inside `adonisrc.ts` file.
25
25
 
26
26
  ```typescript
27
27
  providers: [
@@ -4,7 +4,7 @@ import type { LucidModel, ModelQueryBuilderContract } from '@adonisjs/lucid/type
4
4
  import type { QueryClientContract } from '@adonisjs/lucid/types/database';
5
5
  import { BaseModel } from '@adonisjs/lucid/orm';
6
6
  type ModelQueryBuilderContractWithIgnoreDeleted<T extends LucidModel, R = InstanceType<T>> = ModelQueryBuilderContract<T, R> & {
7
- ignoreDeleted?: boolean;
7
+ ignoreDeleted: boolean;
8
8
  };
9
9
  export declare function SoftDeletes<T extends NormalizeConstructor<typeof BaseModel>>(superclass: T): {
10
10
  new (...args: any[]): {
@@ -91,9 +91,8 @@ export declare function SoftDeletes<T extends NormalizeConstructor<typeof BaseMo
91
91
  toAttributes(): Record<string, any>;
92
92
  related<Name extends undefined>(relation: Name): NonNullable</*elided*/ any[Name]> extends import("@adonisjs/lucid/types/relations").ModelRelations<LucidModel, LucidModel> ? (import("@adonisjs/lucid/types/relations").ModelRelations<LucidModel, LucidModel> & /*elided*/ any[Name] & {})["client"] : never;
93
93
  };
94
- boot(): void;
95
94
  ignoreDeleted<Model extends /*elided*/ any & T>(query: ModelQueryBuilderContractWithIgnoreDeleted<Model, InstanceType<Model>>): void;
96
- ignoreDeletedPaginate([countQuery, query]: any): void;
95
+ ignoreDeletedPaginate<Model extends /*elided*/ any & T>([countQuery, query]: [ModelQueryBuilderContractWithIgnoreDeleted<Model, InstanceType<Model>>, ModelQueryBuilderContractWithIgnoreDeleted<Model, InstanceType<Model>>]): void;
97
96
  disableIgnore<Model extends /*elided*/ any & T, Result = InstanceType<Model>>(this: Model, query: ModelQueryBuilderContractWithIgnoreDeleted<Model, Result>): ModelQueryBuilderContractWithIgnoreDeleted<Model, Result>;
98
97
  /**
99
98
  * Fetch all models without filter by deleted_at
@@ -141,6 +140,7 @@ export declare function SoftDeletes<T extends NormalizeConstructor<typeof BaseMo
141
140
  <Model extends LucidModel>(this: Model, name: string): import("@adonisjs/lucid/types/relations").RelationshipsContract;
142
141
  };
143
142
  $defineProperty: <Model extends LucidModel, Prop extends keyof Model>(this: Model, propertyName: Prop, defaultValue: Model[Prop], strategy: "inherit" | "define" | ((value: Model[Prop]) => Model[Prop])) => void;
143
+ boot: () => void;
144
144
  before: {
145
145
  <Model extends LucidModel, Event extends "find" | "fetch">(this: Model, event: Event, handler: import("@adonisjs/lucid/types/model").HooksHandler<ModelQueryBuilderContract<Model>, Event>): void;
146
146
  <Model extends LucidModel>(this: Model, event: "paginate", handler: import("@adonisjs/lucid/types/model").HooksHandler<[ModelQueryBuilderContract<Model>, ModelQueryBuilderContract<Model>], "paginate">): void;
@@ -14,35 +14,21 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
14
14
  };
15
15
  import { DateTime } from 'luxon';
16
16
  import { Exception } from '@adonisjs/core/exceptions';
17
- import { column } from '@adonisjs/lucid/orm';
17
+ import { column, beforeFind, beforeFetch, beforePaginate } from '@adonisjs/lucid/orm';
18
18
  export function SoftDeletes(superclass) {
19
19
  class ModelWithSoftDeletes extends superclass {
20
- static boot() {
21
- super.boot();
22
- // `compose()` introduces intermediate classes. Depending on how Lucid handles
23
- // boot flags, hooks can be skipped when mixing multiple mixins.
24
- // Track hook registration per subclass.
25
- if (this.$softDeletesHooksRegistered)
26
- return;
27
- this.$softDeletesHooksRegistered = true;
28
- this.before('find', this.ignoreDeleted.bind(this));
29
- this.before('fetch', this.ignoreDeleted.bind(this));
30
- this.before('paginate', this.ignoreDeletedPaginate.bind(this));
31
- }
32
20
  static ignoreDeleted(query) {
33
21
  if (query['ignoreDeleted'] === false) {
34
22
  return;
35
23
  }
36
24
  const isGroupLimitQuery = query.clone().toQuery().includes('adonis_group_limit_counter');
37
25
  const deletedAtColumn = query.model.$getColumn('deletedAt')?.columnName;
38
- if (!deletedAtColumn) {
39
- return;
40
- }
41
- const queryIgnoreDeleted = isGroupLimitQuery ? query.knexQuery : query;
26
+ const queryIgnoreDeleted = isGroupLimitQuery
27
+ ? query.knexQuery['_single'].table
28
+ : query;
42
29
  queryIgnoreDeleted.whereNull(`${query.model.table}.${deletedAtColumn}`);
43
30
  }
44
31
  static ignoreDeletedPaginate([countQuery, query]) {
45
- ;
46
32
  countQuery['ignoreDeleted'] = query['ignoreDeleted'];
47
33
  this.ignoreDeleted(countQuery);
48
34
  }
@@ -132,5 +118,12 @@ export function SoftDeletes(superclass) {
132
118
  __decorate([
133
119
  column.dateTime()
134
120
  ], ModelWithSoftDeletes.prototype, "deletedAt", void 0);
121
+ __decorate([
122
+ beforeFind(),
123
+ beforeFetch()
124
+ ], ModelWithSoftDeletes, "ignoreDeleted", null);
125
+ __decorate([
126
+ beforePaginate()
127
+ ], ModelWithSoftDeletes, "ignoreDeletedPaginate", null);
135
128
  return ModelWithSoftDeletes;
136
129
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@codenameryuu/adonis-lucid-soft-deletes",
3
3
  "description": "Addon for soft deletes Adonis JS with Lucid ORM",
4
- "version": "1.8.0",
4
+ "version": "2.0.0",
5
5
  "author": "codenameryuu",
6
6
  "license": "MIT",
7
7
  "homepage": "https://github.com/codenameryuu/adonis-lucid-soft-deletes#readme",