@drax/dashboard-back 0.43.0 → 0.44.1

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.
@@ -1,10 +1,24 @@
1
- import DashboardRepository from '../../repository/DashboardRepository.js';
1
+ import DashboardMongoRepository from '../../repository/mongo/DashboardMongoRepository.js';
2
+ import DashboardSqliteRepository from '../../repository/sqlite/DashboardSqliteRepository.js';
2
3
  import { DashboardService } from '../../services/DashboardService.js';
3
4
  import { DashboardBaseSchema } from "../../schemas/DashboardSchema.js";
5
+ import { COMMON, CommonConfig, DraxConfig } from "@drax/common-back";
4
6
  class DashboardServiceFactory {
5
7
  static get instance() {
6
8
  if (!DashboardServiceFactory.service) {
7
- const repository = new DashboardRepository();
9
+ let repository;
10
+ switch (DraxConfig.getOrLoad(CommonConfig.DbEngine)) {
11
+ case COMMON.DB_ENGINES.MONGODB:
12
+ repository = new DashboardMongoRepository();
13
+ break;
14
+ case COMMON.DB_ENGINES.SQLITE:
15
+ const dbFile = DraxConfig.getOrLoad(CommonConfig.SqliteDbFile);
16
+ repository = new DashboardSqliteRepository(dbFile, false);
17
+ repository.build();
18
+ break;
19
+ default:
20
+ throw new Error("DraxConfig.DB_ENGINE must be one of " + Object.values(COMMON.DB_ENGINES).join(", "));
21
+ }
8
22
  const schema = DashboardBaseSchema;
9
23
  DashboardServiceFactory.service = new DashboardService(repository, schema);
10
24
  }
package/dist/index.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import DashboardPermissions from './permissions/DashboardPermissions.js';
2
2
  import DashboardSchema from './schemas/DashboardSchema.js';
3
3
  import DashboardModel from './models/DashboardModel.js';
4
- import DashboardRepository from './repository/DashboardRepository.js';
4
+ import DashboardMongoRepository from './repository/mongo/DashboardMongoRepository.js';
5
+ import DashboardSqliteRepository from './repository/sqlite/DashboardSqliteRepository.js';
5
6
  import DashboardService from './services/DashboardService.js';
6
7
  import DashboardServiceFactory from './factory/services/DashboardServiceFactory.js';
7
8
  import DashboardController from './controllers/DashboardController.js';
8
9
  import DashboardRoutes from './routes/DashboardRoutes.js';
9
- export { DashboardPermissions, DashboardSchema, DashboardModel, DashboardRepository, DashboardService, DashboardServiceFactory, DashboardController, DashboardRoutes };
10
+ export { DashboardPermissions, DashboardSchema, DashboardModel, DashboardMongoRepository, DashboardSqliteRepository, DashboardService, DashboardServiceFactory, DashboardController, DashboardRoutes };
@@ -0,0 +1,12 @@
1
+ import { AbstractMongoRepository } from "@drax/crud-back";
2
+ import { DashboardModel } from "../../models/DashboardModel.js";
3
+ class DashboardMongoRepository extends AbstractMongoRepository {
4
+ constructor() {
5
+ super();
6
+ this._model = DashboardModel;
7
+ this._searchFields = ['identifier', 'title'];
8
+ this._populateFields = [];
9
+ }
10
+ }
11
+ export default DashboardMongoRepository;
12
+ export { DashboardMongoRepository };
@@ -0,0 +1,37 @@
1
+ import { AbstractSqliteRepository } from "@drax/crud-back";
2
+ class DashboardSqliteRepository extends AbstractSqliteRepository {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.tableName = 'dashboards';
6
+ this.searchFields = [];
7
+ this.booleanFields = [];
8
+ this.identifier = '_id';
9
+ this.populateFields = [];
10
+ this.tableFields = [
11
+ { name: "identifier", type: "TEXT", unique: true, primary: false },
12
+ { name: "title", type: "TEXT", unique: true, primary: false },
13
+ { name: "cards", type: "TEXT", unique: false, primary: false },
14
+ { name: "createdAt", type: "TEXT", unique: false, primary: false },
15
+ { name: "updatedAt", type: "TEXT", unique: false, primary: false },
16
+ ];
17
+ this.verbose = false;
18
+ }
19
+ async prepareData(data) {
20
+ if (!data) {
21
+ return;
22
+ }
23
+ if (data && data.cards) {
24
+ data.cards = JSON.stringify(data.cards);
25
+ }
26
+ }
27
+ async prepareItem(item) {
28
+ if (!item) {
29
+ return;
30
+ }
31
+ if (item && item.cards) {
32
+ item.cards = JSON.parse(item.cards);
33
+ }
34
+ }
35
+ }
36
+ export default DashboardSqliteRepository;
37
+ export { DashboardSqliteRepository };
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.43.0",
6
+ "version": "0.44.1",
7
7
  "description": "Dahsboard backend",
8
8
  "main": "dist/index.js",
9
9
  "types": "types/index.d.ts",
@@ -22,8 +22,8 @@
22
22
  "author": "Cristian Incarnato & Drax Team",
23
23
  "license": "ISC",
24
24
  "dependencies": {
25
- "@drax/crud-back": "^0.43.0",
26
- "@drax/crud-share": "^0.43.0",
25
+ "@drax/crud-back": "^0.44.1",
26
+ "@drax/crud-share": "^0.44.1",
27
27
  "mongoose": "^8.6.3",
28
28
  "mongoose-paginate-v2": "^1.8.3"
29
29
  },
@@ -39,5 +39,5 @@
39
39
  "tsc-alias": "^1.8.10",
40
40
  "typescript": "^5.6.2"
41
41
  },
42
- "gitHead": "3451a1c66eaf3facd4fef67d96750bf5d38a1d5c"
42
+ "gitHead": "f80d56ce3769fe36bf69f1903efa0a4290de06a2"
43
43
  }
@@ -1,14 +1,32 @@
1
-
2
- import DashboardRepository from '../../repository/DashboardRepository.js'
1
+ import type {IDashboardRepository} from '../../interfaces/IDashboardRepository'
2
+ import DashboardMongoRepository from '../../repository/mongo/DashboardMongoRepository.js'
3
+ import DashboardSqliteRepository from '../../repository/sqlite/DashboardSqliteRepository.js'
3
4
  import {DashboardService} from '../../services/DashboardService.js'
4
5
  import {DashboardBaseSchema} from "../../schemas/DashboardSchema.js";
6
+ import {COMMON, CommonConfig, DraxConfig} from "@drax/common-back";
7
+
5
8
 
6
9
  class DashboardServiceFactory {
7
10
  private static service: DashboardService;
8
11
 
9
12
  public static get instance(): DashboardService {
10
13
  if (!DashboardServiceFactory.service) {
11
- const repository = new DashboardRepository();
14
+
15
+
16
+ let repository: IDashboardRepository
17
+ switch (DraxConfig.getOrLoad(CommonConfig.DbEngine)) {
18
+ case COMMON.DB_ENGINES.MONGODB:
19
+ repository = new DashboardMongoRepository()
20
+ break;
21
+ case COMMON.DB_ENGINES.SQLITE:
22
+ const dbFile = DraxConfig.getOrLoad(CommonConfig.SqliteDbFile)
23
+ repository = new DashboardSqliteRepository(dbFile, false)
24
+ repository.build()
25
+ break;
26
+ default:
27
+ throw new Error("DraxConfig.DB_ENGINE must be one of " + Object.values(COMMON.DB_ENGINES).join(", "));
28
+ }
29
+
12
30
  const schema = DashboardBaseSchema;
13
31
  DashboardServiceFactory.service = new DashboardService(repository, schema);
14
32
  }
package/src/index.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import DashboardPermissions from './permissions/DashboardPermissions.js'
2
2
  import DashboardSchema from './schemas/DashboardSchema.js'
3
3
  import DashboardModel from './models/DashboardModel.js'
4
- import DashboardRepository from './repository/DashboardRepository.js'
4
+ import DashboardMongoRepository from './repository/mongo/DashboardMongoRepository.js'
5
+ import DashboardSqliteRepository from './repository/sqlite/DashboardSqliteRepository.js'
5
6
  import DashboardService from './services/DashboardService.js'
6
7
  import DashboardServiceFactory from './factory/services/DashboardServiceFactory.js'
7
8
  import DashboardController from './controllers/DashboardController.js'
@@ -16,7 +17,8 @@ export {
16
17
  DashboardPermissions,
17
18
  DashboardSchema,
18
19
  DashboardModel,
19
- DashboardRepository,
20
+ DashboardMongoRepository,
21
+ DashboardSqliteRepository,
20
22
  DashboardService,
21
23
  DashboardServiceFactory,
22
24
  DashboardController,
@@ -1,7 +1,7 @@
1
1
 
2
2
  import {AbstractMongoRepository} from "@drax/crud-back";
3
- import {DashboardModel} from "../models/DashboardModel.js";
4
- import type {IDashboardRepository} from '../interfaces/IDashboardRepository'
3
+ import {DashboardModel} from "../../models/DashboardModel.js";
4
+ import type {IDashboardRepository} from '../../interfaces/IDashboardRepository'
5
5
  import type {IDashboard, IDashboardBase} from "@drax/dashboard-share";
6
6
 
7
7
 
@@ -0,0 +1,52 @@
1
+ import {IDashboardRepository} from '../../interfaces/IDashboardRepository'
2
+ import {IDashboard, IDashboardBase} from "@drax/dashboard-share";
3
+ import {
4
+ SqliteTableField,
5
+ } from "@drax/common-back";
6
+ import {AbstractSqliteRepository} from "@drax/crud-back";
7
+
8
+
9
+ class DashboardSqliteRepository extends AbstractSqliteRepository<IDashboard,IDashboardBase, IDashboardBase> implements IDashboardRepository{
10
+
11
+ protected db: any;
12
+ protected tableName: string = 'dashboards';
13
+ protected dataBaseFile: string;
14
+ protected searchFields: string[] = [];
15
+ protected booleanFields: string[] = [];
16
+ protected identifier: string = '_id';
17
+ protected populateFields = []
18
+ protected tableFields: SqliteTableField[] = [
19
+ {name: "identifier", type: "TEXT", unique: true, primary: false},
20
+ {name: "title", type: "TEXT", unique: true, primary: false},
21
+ {name: "cards", type: "TEXT", unique: false, primary: false},
22
+ {name: "createdAt", type: "TEXT", unique: false, primary: false},
23
+ {name: "updatedAt", type: "TEXT", unique: false, primary: false},
24
+ ]
25
+ protected verbose: boolean = false;
26
+
27
+
28
+ async prepareData(data: any) {
29
+ if (!data) {
30
+ return
31
+ }
32
+
33
+ if (data && data.cards) {
34
+ data.cards = JSON.stringify(data.cards)
35
+ }
36
+ }
37
+
38
+ async prepareItem(item: any) {
39
+
40
+ if (!item) {
41
+ return
42
+ }
43
+
44
+ if (item && item.cards) {
45
+ item.cards = JSON.parse(item.cards)
46
+ }
47
+ }
48
+
49
+ }
50
+
51
+ export default DashboardSqliteRepository
52
+ export {DashboardSqliteRepository}