@hedhog/setting 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +108 -0
- package/dist/settings.controller.d.ts.map +1 -1
- package/dist/settings.controller.js +2 -0
- package/dist/settings.controller.js.map +1 -1
- package/dist/settings.service.d.ts.map +1 -1
- package/dist/settings.service.js +2 -15
- package/dist/settings.service.js.map +1 -1
- package/package.json +3 -1
- package/src/settings.controller.ts +2 -0
- package/src/settings.service.ts +5 -16
package/README.md
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
# <p align="center">hedhog/setting</p>
|
2
|
+
|
3
|
+
<p align="center">
|
4
|
+
<img src="https://avatars.githubusercontent.com/u/177489127?s=200&v=4" alt="Hedhog Avatar" />
|
5
|
+
</p>
|
6
|
+
|
7
|
+
**Hedhog Setting** module provides a comprehensive solution for managing application settings. It includes functionalities to create, read, update, and delete settings, along with support for pagination and search capabilities. This module integrates with the HedHog ecosystem, utilizing @hedhog/auth for authentication, @hedhog/pagination for managing paginated results, and @hedhog/prisma for database interactions.
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
This library is an integral part of the HedHog framework and should be installed as a dependency in your HedHog project. Ensure that the necessary dependencies are configured in your HedHog project.
|
12
|
+
|
13
|
+
```bash
|
14
|
+
npm i @hedhog/setting
|
15
|
+
```
|
16
|
+
|
17
|
+
## Controller Endpoints
|
18
|
+
|
19
|
+
### `GET /settings`
|
20
|
+
|
21
|
+
- **Description**: Retrieve a paginated list of settings.
|
22
|
+
- **Authentication**: Required (uses `AuthGuard`).
|
23
|
+
- **Pagination**: Supports pagination through query parameters.
|
24
|
+
|
25
|
+
### `GET /settings/:settingId`
|
26
|
+
|
27
|
+
- **Description**: Retrieve a specific setting by its ID.
|
28
|
+
- **Authentication**: Required (uses AuthGuard).
|
29
|
+
- **Parameters**:
|
30
|
+
- **settingId** (number): The ID of the setting to retrieve.
|
31
|
+
|
32
|
+
### `POST /settings`
|
33
|
+
|
34
|
+
- **Description**: Create a new setting.
|
35
|
+
- **Authentication**: Required (uses AuthGuard).
|
36
|
+
- **Body**:
|
37
|
+
- **name** (string): Name of the setting.
|
38
|
+
|
39
|
+
### `PATCH /settings/:settingId`
|
40
|
+
|
41
|
+
- **Description**: Update an existing setting.
|
42
|
+
- **Authentication**: Required (uses AuthGuard).
|
43
|
+
- **Parameters**:
|
44
|
+
- **settingId** (number): The ID of the setting to update.
|
45
|
+
- **Body**:
|
46
|
+
- **name** (string, optional): Updated name of the setting.
|
47
|
+
|
48
|
+
### `DELETE /settings`
|
49
|
+
|
50
|
+
- **Description**: Delete one or more settings.
|
51
|
+
- **Authentication**: Required (uses AuthGuard).
|
52
|
+
- **Body**:
|
53
|
+
- **ids** (number[]): Array of setting IDs to delete.
|
54
|
+
|
55
|
+
## Service Methods
|
56
|
+
|
57
|
+
- **getSettings(paginationParams: PaginationDTO)**
|
58
|
+
|
59
|
+
- **Description**: Retrieves a paginated list of settings with optional search functionality.
|
60
|
+
- **Parameters**:
|
61
|
+
- **paginationParams**: Includes pagination and search criteria.
|
62
|
+
|
63
|
+
- **get(settingId: number)**
|
64
|
+
|
65
|
+
- **Description**: Retrieves a specific setting by its ID.
|
66
|
+
- **Parameters**:
|
67
|
+
- **settingId**: ID of the setting to retrieve.
|
68
|
+
|
69
|
+
- **create(data: CreateDTO)**
|
70
|
+
|
71
|
+
- **Description**: Creates a new setting.
|
72
|
+
- **Parameters**:
|
73
|
+
- **data**: Includes name of the setting.
|
74
|
+
|
75
|
+
- **update(id: number, data: UpdateDTO)**
|
76
|
+
|
77
|
+
- **Description**: Updates an existing setting.
|
78
|
+
- **Parameters**:
|
79
|
+
- **id**: ID of the setting to update.
|
80
|
+
- **data**: Includes updated name of the setting.
|
81
|
+
|
82
|
+
- **delete(data: DeleteDTO)**
|
83
|
+
- **Description**: Deletes one or more settings.
|
84
|
+
- **Parameters**:
|
85
|
+
- **data**: Includes array of ids to delete.
|
86
|
+
|
87
|
+
## Folder Structure
|
88
|
+
|
89
|
+
```plaintext
|
90
|
+
setting/
|
91
|
+
├── dist/ # Compiled JavaScript files from build
|
92
|
+
├── node_modules/ # Discardable folder with all module dependencies
|
93
|
+
├── src/
|
94
|
+
│ ├── dto/ # Data Transfer Objects
|
95
|
+
│ │ ├── create.dto.ts # DTO for creating settings
|
96
|
+
│ │ ├── delete.dto.ts # DTO for deleting settings
|
97
|
+
│ │ ├── update.dto.ts # DTO for updating settings
|
98
|
+
│ ├── migrations/ # Database migrations
|
99
|
+
│ ├── setting.controller.ts # Controller for settings
|
100
|
+
│ ├── setting.module.ts # Module definition for settings
|
101
|
+
│ ├── setting.service.ts # Service class for settings logic
|
102
|
+
├── .gitignore # Specifies which files Git should ignore
|
103
|
+
├── package.json # Manages dependencies and scripts for the module
|
104
|
+
├── package-lock.json # Lock file for dependencies
|
105
|
+
├── README.md # Documentation for the library
|
106
|
+
├── tsconfig.lib.json # TypeScript configuration for library builds
|
107
|
+
├── tsconfig.production.json # TypeScript configuration for production builds
|
108
|
+
```
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"settings.controller.d.ts","sourceRoot":"","sources":["../src/settings.controller.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
1
|
+
{"version":3,"file":"settings.controller.d.ts","sourceRoot":"","sources":["../src/settings.controller.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,qBAEa,kBAAkB;IAG3B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAK7C,WAAW,CAAe,gBAAgB,KAAA;IAM1C,IAAI,CAAmC,SAAS,EAAE,MAAM;IAM9D,MAAM,CAAS,IAAI,EAAE,SAAS;IAMxB,MAAM,CACwB,SAAS,EAAE,MAAM,EAC3C,IAAI,EAAE,SAAS;IAUnB,MAAM,CAAS,IAAI,EAAE,SAAS;CAGrC"}
|
@@ -20,6 +20,7 @@ const create_dto_1 = require("./dto/create.dto");
|
|
20
20
|
const delete_dto_1 = require("./dto/delete.dto");
|
21
21
|
const update_dto_1 = require("./dto/update.dto");
|
22
22
|
const settings_service_1 = require("./settings.service");
|
23
|
+
const permission_1 = require("@hedhog/permission");
|
23
24
|
let SettingsController = class SettingsController {
|
24
25
|
constructor(settingsService) {
|
25
26
|
this.settingsService = settingsService;
|
@@ -86,6 +87,7 @@ __decorate([
|
|
86
87
|
__metadata("design:returntype", Promise)
|
87
88
|
], SettingsController.prototype, "delete", null);
|
88
89
|
exports.SettingsController = SettingsController = __decorate([
|
90
|
+
(0, permission_1.Permission)(),
|
89
91
|
(0, common_1.Controller)('settings'),
|
90
92
|
__param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => settings_service_1.SettingsService))),
|
91
93
|
__metadata("design:paramtypes", [settings_service_1.SettingsService])
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"settings.controller.js","sourceRoot":"","sources":["../src/settings.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uCAAyC;AACzC,mDAAgD;AAChD,2CAYwB;AACxB,iDAA6C;AAC7C,iDAA6C;AAC7C,iDAA6C;AAC7C,yDAAqD;
|
1
|
+
{"version":3,"file":"settings.controller.js","sourceRoot":"","sources":["../src/settings.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uCAAyC;AACzC,mDAAgD;AAChD,2CAYwB;AACxB,iDAA6C;AAC7C,iDAA6C;AAC7C,iDAA6C;AAC7C,yDAAqD;AACrD,mDAAgD;AAIzC,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,YAEmB,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;IAChD,CAAC;IAIE,AAAN,KAAK,CAAC,WAAW,CAAe,gBAAgB;QAC9C,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC5D,CAAC;IAIK,AAAN,KAAK,CAAC,IAAI,CAAmC,SAAiB;QAC5D,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAID,MAAM,CAAS,IAAe;QAC5B,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAIK,AAAN,KAAK,CAAC,MAAM,CACwB,SAAiB,EAC3C,IAAe;QAEvB,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YACjC,EAAE,EAAE,SAAS;YACb,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAIK,AAAN,KAAK,CAAC,MAAM,CAAS,IAAe;QAClC,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF,CAAA;AAzCY,gDAAkB;AAQvB;IAFL,IAAA,kBAAS,EAAC,gBAAS,CAAC;IACpB,IAAA,YAAG,GAAE;IACa,WAAA,IAAA,uBAAU,GAAE,CAAA;;;;qDAE9B;AAIK;IAFL,IAAA,kBAAS,EAAC,gBAAS,CAAC;IACpB,IAAA,YAAG,EAAC,YAAY,CAAC;IACN,WAAA,IAAA,cAAK,EAAC,WAAW,EAAE,qBAAY,CAAC,CAAA;;;;8CAE3C;AAID;IAFC,IAAA,kBAAS,EAAC,gBAAS,CAAC;IACpB,IAAA,aAAI,GAAE;IACC,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAO,sBAAS;;gDAE7B;AAIK;IAFL,IAAA,kBAAS,EAAC,gBAAS,CAAC;IACpB,IAAA,cAAK,EAAC,YAAY,CAAC;IAEjB,WAAA,IAAA,cAAK,EAAC,WAAW,EAAE,qBAAY,CAAC,CAAA;IAChC,WAAA,IAAA,aAAI,GAAE,CAAA;;6CAAO,sBAAS;;gDAMxB;AAIK;IAFL,IAAA,kBAAS,EAAC,gBAAS,CAAC;IACpB,IAAA,eAAM,GAAE;IACK,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAO,sBAAS;;gDAEnC;6BAxCU,kBAAkB;IAF9B,IAAA,uBAAU,GAAE;IACZ,IAAA,mBAAU,EAAC,UAAU,CAAC;IAGlB,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,kCAAe,CAAC,CAAC,CAAA;qCACR,kCAAe;GAHxC,kBAAkB,CAyC9B"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"settings.service.d.ts","sourceRoot":"","sources":["../src/settings.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAO/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,qBACa,eAAe;IAGxB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAFjB,aAAa,EAAE,aAAa,EAE5B,iBAAiB,EAAE,iBAAiB;IAGjD,WAAW,CAAC,gBAAgB,EAAE,aAAa;
|
1
|
+
{"version":3,"file":"settings.service.d.ts","sourceRoot":"","sources":["../src/settings.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAO/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,qBACa,eAAe;IAGxB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAFjB,aAAa,EAAE,aAAa,EAE5B,iBAAiB,EAAE,iBAAiB;IAGjD,WAAW,CAAC,gBAAgB,EAAE,aAAa;IAmB3C,GAAG,CAAC,SAAS,EAAE,MAAM;IAMrB,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;IAM1B,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE;IAOpD,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,SAAS;CAehC"}
|
package/dist/settings.service.js
CHANGED
@@ -22,21 +22,8 @@ let SettingsService = class SettingsService {
|
|
22
22
|
this.paginationService = paginationService;
|
23
23
|
}
|
24
24
|
async getSettings(paginationParams) {
|
25
|
-
const
|
26
|
-
|
27
|
-
name: { contains: paginationParams.search },
|
28
|
-
},
|
29
|
-
];
|
30
|
-
if (this.prismaService.getProvider() === 'postgres') {
|
31
|
-
for (let i = 0; i < OR.length; i++) {
|
32
|
-
for (let x = 0; x < Object.keys(OR[i]).length; x++) {
|
33
|
-
OR[i][Object.keys(OR[i])[x]].insensitive = true;
|
34
|
-
}
|
35
|
-
}
|
36
|
-
}
|
37
|
-
if (!isNaN(+paginationParams.search)) {
|
38
|
-
OR.push({ id: { equals: +paginationParams.search } });
|
39
|
-
}
|
25
|
+
const fields = ['name'];
|
26
|
+
const OR = this.prismaService.createInsensitiveSearch(fields, paginationParams);
|
40
27
|
return this.paginationService.paginate(this.prismaService.settings, paginationParams, {
|
41
28
|
where: {
|
42
29
|
OR,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"settings.service.js","sourceRoot":"","sources":["../src/settings.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mDAAsE;AACtE,2CAA+C;AAC/C,2CAKwB;AAMjB,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,YAEmB,aAA4B,EAE5B,iBAAoC;QAFpC,kBAAa,GAAb,aAAa,CAAe;QAE5B,sBAAiB,GAAjB,iBAAiB,CAAmB;IACpD,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,gBAA+B;QAC/C,MAAM,
|
1
|
+
{"version":3,"file":"settings.service.js","sourceRoot":"","sources":["../src/settings.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mDAAsE;AACtE,2CAA+C;AAC/C,2CAKwB;AAMjB,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,YAEmB,aAA4B,EAE5B,iBAAoC;QAFpC,kBAAa,GAAb,aAAa,CAAe;QAE5B,sBAAiB,GAAjB,iBAAiB,CAAmB;IACpD,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,gBAA+B;QAC/C,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;QAExB,MAAM,EAAE,GAAU,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAC1D,MAAM,EACN,gBAAgB,CACjB,CAAC;QAEF,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CACpC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAC3B,gBAAgB,EAChB;YACE,KAAK,EAAE;gBACL,EAAE;aACH;SACF,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,SAAiB;QACzB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC5C,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;SACzB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAa;QAC9B,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;YACxC,IAAI,EAAE,EAAE,IAAI,EAAE;SACf,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAmC;QACxD,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;YACxC,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAa;QAC7B,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,4BAAmB,CAC3B,iDAAiD,CAClD,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC5C,KAAK,EAAE;gBACL,EAAE,EAAE;oBACF,EAAE,EAAE,GAAG;iBACR;aACF;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AA7DY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,sBAAa,CAAC,CAAC,CAAA;IAEvC,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,8BAAiB,CAAC,CAAC,CAAA;qCADZ,sBAAa;QAET,8BAAiB;GAL5C,eAAe,CA6D3B"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@hedhog/setting",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.6",
|
4
4
|
"private": false,
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"scripts": {
|
@@ -12,12 +12,14 @@
|
|
12
12
|
"license": "MIT",
|
13
13
|
"description": "",
|
14
14
|
"peerDependencies": {
|
15
|
+
"@hedhog/permission": "latest",
|
15
16
|
"@hedhog/auth": "latest",
|
16
17
|
"@hedhog/pagination": "latest",
|
17
18
|
"@prisma/client": "^5.17.0",
|
18
19
|
"bcrypt": "^5.1.1"
|
19
20
|
},
|
20
21
|
"devDependencies": {
|
22
|
+
"@hedhog/permission": "latest",
|
21
23
|
"@hedhog/auth": "latest",
|
22
24
|
"@hedhog/pagination": "latest",
|
23
25
|
"@hedhog/prisma": "latest",
|
@@ -17,7 +17,9 @@ import { CreateDTO } from './dto/create.dto';
|
|
17
17
|
import { DeleteDTO } from './dto/delete.dto';
|
18
18
|
import { UpdateDTO } from './dto/update.dto';
|
19
19
|
import { SettingsService } from './settings.service';
|
20
|
+
import { Permission } from '@hedhog/permission';
|
20
21
|
|
22
|
+
@Permission()
|
21
23
|
@Controller('settings')
|
22
24
|
export class SettingsController {
|
23
25
|
constructor(
|
package/src/settings.service.ts
CHANGED
@@ -20,23 +20,12 @@ export class SettingsService {
|
|
20
20
|
) {}
|
21
21
|
|
22
22
|
async getSettings(paginationParams: PaginationDTO) {
|
23
|
-
const
|
24
|
-
{
|
25
|
-
name: { contains: paginationParams.search },
|
26
|
-
},
|
27
|
-
];
|
28
|
-
|
29
|
-
if (this.prismaService.getProvider() === 'postgres') {
|
30
|
-
for (let i = 0; i < OR.length; i++) {
|
31
|
-
for (let x = 0; x < Object.keys(OR[i]).length; x++) {
|
32
|
-
OR[i][Object.keys(OR[i])[x]].insensitive = true;
|
33
|
-
}
|
34
|
-
}
|
35
|
-
}
|
23
|
+
const fields = ['name'];
|
36
24
|
|
37
|
-
|
38
|
-
|
39
|
-
|
25
|
+
const OR: any[] = this.prismaService.createInsensitiveSearch(
|
26
|
+
fields,
|
27
|
+
paginationParams,
|
28
|
+
);
|
40
29
|
|
41
30
|
return this.paginationService.paginate(
|
42
31
|
this.prismaService.settings,
|