@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 +5 -5
- package/build/src/mixin.d.ts +3 -3
- package/build/src/mixin.js +11 -18
- package/package.json +1 -1
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
|
-
|
|
8
|
-
|
|
7
|
+
* Adonis Js 7
|
|
8
|
+
* Lucid 22 or higher
|
|
9
9
|
|
|
10
10
|
## Installation
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
* Install the package
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
15
|
yarn add @codenameryuu/adonis-lucid-soft-deletes
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
* Configure the package
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
node ace configure @codenameryuu/adonis-lucid-soft-deletes
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
* Make sure to register the provider inside `adonisrc.ts` file.
|
|
25
25
|
|
|
26
26
|
```typescript
|
|
27
27
|
providers: [
|
package/build/src/mixin.d.ts
CHANGED
|
@@ -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
|
|
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]:
|
|
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;
|
package/build/src/mixin.js
CHANGED
|
@@ -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
|
-
|
|
39
|
-
|
|
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": "
|
|
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",
|