@drax/crud-back 3.18.0 → 3.20.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.
Files changed (83) hide show
  1. package/dist/crud-saved-query/controllers/CrudSavedQueryController.js +22 -0
  2. package/dist/crud-saved-query/factory/services/CrudSavedQueryServiceFactory.js +27 -0
  3. package/dist/crud-saved-query/interfaces/ICrudSavedQuery.js +1 -0
  4. package/dist/crud-saved-query/interfaces/ICrudSavedQueryRepository.js +1 -0
  5. package/dist/crud-saved-query/models/CrudSavedQueryModel.js +40 -0
  6. package/dist/crud-saved-query/permissions/CrudSavedQueryPermissions.js +10 -0
  7. package/dist/crud-saved-query/repository/mongo/CrudSavedQueryMongoRepository.js +12 -0
  8. package/dist/crud-saved-query/repository/sqlite/CrudSavedQuerySqliteRepository.js +29 -0
  9. package/dist/crud-saved-query/routes/CrudSavedQueryRoutes.js +20 -0
  10. package/dist/crud-saved-query/schemas/CrudSavedQuerySchema.js +36 -0
  11. package/dist/crud-saved-query/services/CrudSavedQueryService.js +8 -0
  12. package/dist/index.js +11 -1
  13. package/dist/modules/crud-saved-query/controllers/CrudSavedQueryController.js +23 -0
  14. package/dist/modules/crud-saved-query/factory/services/CrudSavedQueryServiceFactory.js +27 -0
  15. package/dist/modules/crud-saved-query/interfaces/ICrudSavedQuery.js +1 -0
  16. package/dist/modules/crud-saved-query/interfaces/ICrudSavedQueryRepository.js +1 -0
  17. package/dist/modules/crud-saved-query/models/CrudSavedQueryModel.js +40 -0
  18. package/dist/modules/crud-saved-query/permissions/CrudSavedQueryPermissions.js +14 -0
  19. package/dist/modules/crud-saved-query/repository/mongo/CrudSavedQueryMongoRepository.js +12 -0
  20. package/dist/modules/crud-saved-query/repository/sqlite/CrudSavedQuerySqliteRepository.js +29 -0
  21. package/dist/modules/crud-saved-query/routes/CrudSavedQueryRoutes.js +20 -0
  22. package/dist/modules/crud-saved-query/schemas/CrudSavedQuerySchema.js +36 -0
  23. package/dist/modules/crud-saved-query/services/CrudSavedQueryService.js +8 -0
  24. package/package.json +3 -3
  25. package/src/crud-saved-query/controllers/CrudSavedQueryController.ts +32 -0
  26. package/src/crud-saved-query/factory/services/CrudSavedQueryServiceFactory.ts +41 -0
  27. package/src/crud-saved-query/interfaces/ICrudSavedQuery.ts +20 -0
  28. package/src/crud-saved-query/interfaces/ICrudSavedQueryRepository.ts +7 -0
  29. package/src/crud-saved-query/models/CrudSavedQueryModel.ts +54 -0
  30. package/src/crud-saved-query/permissions/CrudSavedQueryPermissions.ts +10 -0
  31. package/src/crud-saved-query/repository/mongo/CrudSavedQueryMongoRepository.ts +19 -0
  32. package/src/crud-saved-query/repository/sqlite/CrudSavedQuerySqliteRepository.ts +34 -0
  33. package/src/crud-saved-query/routes/CrudSavedQueryRoutes.ts +31 -0
  34. package/src/crud-saved-query/schemas/CrudSavedQuerySchema.ts +41 -0
  35. package/src/crud-saved-query/services/CrudSavedQueryService.ts +13 -0
  36. package/src/index.ts +19 -0
  37. package/tsconfig.tsbuildinfo +1 -1
  38. package/types/crud-saved-query/controllers/CrudSavedQueryController.d.ts +11 -0
  39. package/types/crud-saved-query/controllers/CrudSavedQueryController.d.ts.map +1 -0
  40. package/types/crud-saved-query/factory/services/CrudSavedQueryServiceFactory.d.ts +8 -0
  41. package/types/crud-saved-query/factory/services/CrudSavedQueryServiceFactory.d.ts.map +1 -0
  42. package/types/crud-saved-query/interfaces/ICrudSavedQuery.d.ts +18 -0
  43. package/types/crud-saved-query/interfaces/ICrudSavedQuery.d.ts.map +1 -0
  44. package/types/crud-saved-query/interfaces/ICrudSavedQueryRepository.d.ts +6 -0
  45. package/types/crud-saved-query/interfaces/ICrudSavedQueryRepository.d.ts.map +1 -0
  46. package/types/crud-saved-query/models/CrudSavedQueryModel.d.ts +15 -0
  47. package/types/crud-saved-query/models/CrudSavedQueryModel.d.ts.map +1 -0
  48. package/types/crud-saved-query/permissions/CrudSavedQueryPermissions.d.ts +10 -0
  49. package/types/crud-saved-query/permissions/CrudSavedQueryPermissions.d.ts.map +1 -0
  50. package/types/crud-saved-query/repository/mongo/CrudSavedQueryMongoRepository.d.ts +9 -0
  51. package/types/crud-saved-query/repository/mongo/CrudSavedQueryMongoRepository.d.ts.map +1 -0
  52. package/types/crud-saved-query/repository/sqlite/CrudSavedQuerySqliteRepository.d.ts +20 -0
  53. package/types/crud-saved-query/repository/sqlite/CrudSavedQuerySqliteRepository.d.ts.map +1 -0
  54. package/types/crud-saved-query/routes/CrudSavedQueryRoutes.d.ts +4 -0
  55. package/types/crud-saved-query/routes/CrudSavedQueryRoutes.d.ts.map +1 -0
  56. package/types/crud-saved-query/schemas/CrudSavedQuerySchema.d.ts +63 -0
  57. package/types/crud-saved-query/schemas/CrudSavedQuerySchema.d.ts.map +1 -0
  58. package/types/crud-saved-query/services/CrudSavedQueryService.d.ts +10 -0
  59. package/types/crud-saved-query/services/CrudSavedQueryService.d.ts.map +1 -0
  60. package/types/index.d.ts +9 -1
  61. package/types/index.d.ts.map +1 -1
  62. package/types/modules/crud-saved-query/controllers/CrudSavedQueryController.d.ts +11 -0
  63. package/types/modules/crud-saved-query/controllers/CrudSavedQueryController.d.ts.map +1 -0
  64. package/types/modules/crud-saved-query/factory/services/CrudSavedQueryServiceFactory.d.ts +8 -0
  65. package/types/modules/crud-saved-query/factory/services/CrudSavedQueryServiceFactory.d.ts.map +1 -0
  66. package/types/modules/crud-saved-query/interfaces/ICrudSavedQuery.d.ts +18 -0
  67. package/types/modules/crud-saved-query/interfaces/ICrudSavedQuery.d.ts.map +1 -0
  68. package/types/modules/crud-saved-query/interfaces/ICrudSavedQueryRepository.d.ts +6 -0
  69. package/types/modules/crud-saved-query/interfaces/ICrudSavedQueryRepository.d.ts.map +1 -0
  70. package/types/modules/crud-saved-query/models/CrudSavedQueryModel.d.ts +15 -0
  71. package/types/modules/crud-saved-query/models/CrudSavedQueryModel.d.ts.map +1 -0
  72. package/types/modules/crud-saved-query/permissions/CrudSavedQueryPermissions.d.ts +14 -0
  73. package/types/modules/crud-saved-query/permissions/CrudSavedQueryPermissions.d.ts.map +1 -0
  74. package/types/modules/crud-saved-query/repository/mongo/CrudSavedQueryMongoRepository.d.ts +9 -0
  75. package/types/modules/crud-saved-query/repository/mongo/CrudSavedQueryMongoRepository.d.ts.map +1 -0
  76. package/types/modules/crud-saved-query/repository/sqlite/CrudSavedQuerySqliteRepository.d.ts +20 -0
  77. package/types/modules/crud-saved-query/repository/sqlite/CrudSavedQuerySqliteRepository.d.ts.map +1 -0
  78. package/types/modules/crud-saved-query/routes/CrudSavedQueryRoutes.d.ts +4 -0
  79. package/types/modules/crud-saved-query/routes/CrudSavedQueryRoutes.d.ts.map +1 -0
  80. package/types/modules/crud-saved-query/schemas/CrudSavedQuerySchema.d.ts +63 -0
  81. package/types/modules/crud-saved-query/schemas/CrudSavedQuerySchema.d.ts.map +1 -0
  82. package/types/modules/crud-saved-query/services/CrudSavedQueryService.d.ts +10 -0
  83. package/types/modules/crud-saved-query/services/CrudSavedQueryService.d.ts.map +1 -0
@@ -0,0 +1,54 @@
1
+ import {mongoose} from "@drax/common-back";
2
+ import type {PaginateModel} from "mongoose";
3
+ import mongoosePaginate from "mongoose-paginate-v2";
4
+ import type {ICrudSavedQuery} from "../interfaces/ICrudSavedQuery";
5
+
6
+ const FieldFilterSchema = new mongoose.Schema({
7
+ field: {type: String, required: true},
8
+ operator: {type: String, required: false, default: "eq"},
9
+ value: {type: mongoose.Schema.Types.Mixed, required: false},
10
+ orGroup: {type: String, required: false}
11
+ }, {_id: false});
12
+
13
+ const DynamicFilterSchema = new mongoose.Schema({
14
+ default: {type: mongoose.Schema.Types.Mixed, required: false},
15
+ label: {type: String, required: false},
16
+ name: {type: String, required: true},
17
+ operator: {type: String, required: false, default: "eq"},
18
+ type: {type: String, required: false, default: "string"},
19
+ permission: {type: String, required: false},
20
+ value: {type: mongoose.Schema.Types.Mixed, required: false},
21
+ ref: {type: String, required: false},
22
+ refDisplay: {type: String, required: false},
23
+ enum: {type: [mongoose.Schema.Types.Mixed], required: false}
24
+ }, {_id: false, strict: false});
25
+
26
+ const CrudSavedQuerySchema = new mongoose.Schema<ICrudSavedQuery>({
27
+ entity: {type: String, required: true, index: true},
28
+ name: {type: String, required: true, index: true},
29
+ shared: {type: Boolean, required: false, default: false, index: true},
30
+ columns: [{type: String, required: true}],
31
+ staticFilters: {type: [FieldFilterSchema], required: false, default: []},
32
+ dynamicFilters: {type: [DynamicFilterSchema], required: false, default: []},
33
+ tenant: {type: mongoose.Schema.Types.ObjectId, ref: "Tenant", required: false, index: true},
34
+ user: {type: mongoose.Schema.Types.ObjectId, ref: "User", required: false, index: true}
35
+ }, {timestamps: true});
36
+
37
+ CrudSavedQuerySchema.index({entity: 1, name: 1, tenant: 1, user: 1});
38
+ CrudSavedQuerySchema.plugin(mongoosePaginate);
39
+
40
+ CrudSavedQuerySchema.virtual("id").get(function () {
41
+ return this._id.toString();
42
+ });
43
+
44
+ CrudSavedQuerySchema.set("toJSON", {getters: true, virtuals: true});
45
+ CrudSavedQuerySchema.set("toObject", {getters: true, virtuals: true});
46
+
47
+ const CrudSavedQueryModel = mongoose.model<ICrudSavedQuery, PaginateModel<ICrudSavedQuery>>(
48
+ "CrudSavedQuery",
49
+ CrudSavedQuerySchema,
50
+ "CrudSavedQuery"
51
+ );
52
+
53
+ export {CrudSavedQuerySchema, CrudSavedQueryModel};
54
+ export default CrudSavedQueryModel;
@@ -0,0 +1,10 @@
1
+ enum CrudSavedQueryPermissions {
2
+ Create = "crudSavedQuery:create",
3
+ Update = "crudSavedQuery:update",
4
+ Delete = "crudSavedQuery:delete",
5
+ View = "crudSavedQuery:view",
6
+ Manage = "crudSavedQuery:manage",
7
+ }
8
+
9
+ export {CrudSavedQueryPermissions};
10
+ export default CrudSavedQueryPermissions;
@@ -0,0 +1,19 @@
1
+ import AbstractMongoRepository from "../../../repository/AbstractMongoRepository.js";
2
+ import {CrudSavedQueryModel} from "../../models/CrudSavedQueryModel.js";
3
+ import type {ICrudSavedQueryRepository} from "../../interfaces/ICrudSavedQueryRepository";
4
+ import type {ICrudSavedQuery, ICrudSavedQueryBase} from "../../interfaces/ICrudSavedQuery";
5
+
6
+ class CrudSavedQueryMongoRepository
7
+ extends AbstractMongoRepository<ICrudSavedQuery, ICrudSavedQueryBase, ICrudSavedQueryBase>
8
+ implements ICrudSavedQueryRepository {
9
+
10
+ constructor() {
11
+ super();
12
+ this._model = CrudSavedQueryModel;
13
+ this._searchFields = ["name", "entity"];
14
+ this._populateFields = ["tenant", "user"];
15
+ }
16
+ }
17
+
18
+ export default CrudSavedQueryMongoRepository;
19
+ export {CrudSavedQueryMongoRepository};
@@ -0,0 +1,34 @@
1
+ import AbstractSqliteRepository from "../../../repository/AbstractSqliteRepository.js";
2
+ import type {ICrudSavedQueryRepository} from "../../interfaces/ICrudSavedQueryRepository";
3
+ import type {ICrudSavedQuery, ICrudSavedQueryBase} from "../../interfaces/ICrudSavedQuery";
4
+ import {SqliteTableField} from "@drax/common-back";
5
+
6
+ class CrudSavedQuerySqliteRepository
7
+ extends AbstractSqliteRepository<ICrudSavedQuery, ICrudSavedQueryBase, ICrudSavedQueryBase>
8
+ implements ICrudSavedQueryRepository {
9
+
10
+ protected tableName: string = "CrudSavedQuery";
11
+ protected searchFields: string[] = ["name", "entity"];
12
+ protected booleanFields: string[] = ["shared"];
13
+ protected jsonFields: string[] = ["columns", "staticFilters", "dynamicFilters"];
14
+ protected identifier: string = "_id";
15
+ protected populateFields = [
16
+ {field: "tenant", table: "Tenant", identifier: "_id"},
17
+ {field: "user", table: "User", identifier: "_id"}
18
+ ];
19
+ protected tableFields: SqliteTableField[] = [
20
+ {name: "entity", type: "TEXT", unique: false, primary: false},
21
+ {name: "name", type: "TEXT", unique: false, primary: false},
22
+ {name: "shared", type: "INTEGER", unique: false, primary: false},
23
+ {name: "columns", type: "TEXT", unique: false, primary: false},
24
+ {name: "staticFilters", type: "TEXT", unique: false, primary: false},
25
+ {name: "dynamicFilters", type: "TEXT", unique: false, primary: false},
26
+ {name: "tenant", type: "TEXT", unique: false, primary: false},
27
+ {name: "user", type: "TEXT", unique: false, primary: false},
28
+ {name: "createdAt", type: "TEXT", unique: false, primary: false},
29
+ {name: "updatedAt", type: "TEXT", unique: false, primary: false}
30
+ ];
31
+ }
32
+
33
+ export default CrudSavedQuerySqliteRepository;
34
+ export {CrudSavedQuerySqliteRepository};
@@ -0,0 +1,31 @@
1
+ import CrudSavedQueryController from "../controllers/CrudSavedQueryController.js";
2
+ import {CrudSchemaBuilder} from "../../builders/CrudSchemaBuilder.js";
3
+ import {CrudSavedQuerySchema, CrudSavedQueryBaseSchema} from "../schemas/CrudSavedQuerySchema.js";
4
+
5
+ async function CrudSavedQueryFastifyRoutes(fastify, options) {
6
+ const controller = new CrudSavedQueryController();
7
+ const schemas = new CrudSchemaBuilder(
8
+ CrudSavedQuerySchema,
9
+ CrudSavedQueryBaseSchema,
10
+ CrudSavedQueryBaseSchema,
11
+ "CrudSavedQuery",
12
+ "openapi-3.0",
13
+ ["crud-saved-queries"]
14
+ );
15
+
16
+ fastify.get("/api/crud-saved-queries", {schema: schemas.paginateSchema}, (req, rep) => controller.paginate(req, rep));
17
+ fastify.get("/api/crud-saved-queries/find", {schema: schemas.findSchema}, (req, rep) => controller.find(req, rep));
18
+ fastify.get("/api/crud-saved-queries/search", {schema: schemas.searchSchema}, (req, rep) => controller.search(req, rep));
19
+ fastify.get("/api/crud-saved-queries/:id", {schema: schemas.findByIdSchema}, (req, rep) => controller.findById(req, rep));
20
+ fastify.get("/api/crud-saved-queries/find-one", {schema: schemas.findOneSchema}, (req, rep) => controller.findOne(req, rep));
21
+ fastify.get("/api/crud-saved-queries/find-by/:field/:value", {schema: schemas.findBySchema}, (req, rep) => controller.findBy(req, rep));
22
+ fastify.get("/api/crud-saved-queries/find-one-by/:field/:value", {schema: schemas.findOneBySchema}, (req, rep) => controller.findOneBy(req, rep));
23
+
24
+ fastify.post("/api/crud-saved-queries", {schema: schemas.createSchema}, (req, rep) => controller.create(req, rep));
25
+ fastify.put("/api/crud-saved-queries/:id", {schema: schemas.updateSchema}, (req, rep) => controller.update(req, rep));
26
+ fastify.patch("/api/crud-saved-queries/:id", {schema: schemas.updateSchema}, (req, rep) => controller.updatePartial(req, rep));
27
+ fastify.delete("/api/crud-saved-queries/:id", {schema: schemas.deleteSchema}, (req, rep) => controller.delete(req, rep));
28
+ }
29
+
30
+ export default CrudSavedQueryFastifyRoutes;
31
+ export {CrudSavedQueryFastifyRoutes};
@@ -0,0 +1,41 @@
1
+ import {z} from "zod";
2
+
3
+ const CrudSavedQueryFieldFilterSchema = z.object({
4
+ field: z.string().min(1, "validation.required"),
5
+ operator: z.string().optional().default("eq"),
6
+ value: z.any().optional().nullable(),
7
+ orGroup: z.string().optional()
8
+ });
9
+
10
+ const CrudSavedQueryDynamicFilterSchema = z.object({
11
+ default: z.any().optional().nullable(),
12
+ label: z.string().optional(),
13
+ name: z.string().min(1, "validation.required"),
14
+ operator: z.string().optional().default("eq"),
15
+ type: z.string().optional().default("string"),
16
+ permission: z.string().optional(),
17
+ value: z.any().optional().nullable(),
18
+ ref: z.string().optional(),
19
+ refDisplay: z.string().optional(),
20
+ enum: z.array(z.any()).optional()
21
+ }).catchall(z.any());
22
+
23
+ const CrudSavedQueryBaseSchema = z.object({
24
+ entity: z.string().min(1, "validation.required"),
25
+ name: z.string().min(1, "validation.required"),
26
+ shared: z.boolean().optional().default(false),
27
+ columns: z.array(z.string()).optional().default([]),
28
+ staticFilters: z.array(CrudSavedQueryFieldFilterSchema).optional().default([]),
29
+ dynamicFilters: z.array(CrudSavedQueryDynamicFilterSchema).optional().default([]),
30
+ tenant: z.coerce.string().optional().nullable(),
31
+ user: z.coerce.string().optional().nullable()
32
+ });
33
+
34
+ const CrudSavedQuerySchema = CrudSavedQueryBaseSchema.extend({
35
+ _id: z.coerce.string(),
36
+ tenant: z.object({_id: z.coerce.string(), name: z.string()}).nullable().optional(),
37
+ user: z.object({_id: z.coerce.string(), username: z.string()}).nullable().optional()
38
+ });
39
+
40
+ export default CrudSavedQuerySchema;
41
+ export {CrudSavedQuerySchema, CrudSavedQueryBaseSchema};
@@ -0,0 +1,13 @@
1
+ import AbstractService from "../../services/AbstractService.js";
2
+ import type {ZodObject, ZodRawShape} from "zod";
3
+ import type {ICrudSavedQueryRepository} from "../interfaces/ICrudSavedQueryRepository";
4
+ import type {ICrudSavedQuery, ICrudSavedQueryBase} from "../interfaces/ICrudSavedQuery";
5
+
6
+ class CrudSavedQueryService extends AbstractService<ICrudSavedQuery, ICrudSavedQueryBase, ICrudSavedQueryBase> {
7
+ constructor(repository: ICrudSavedQueryRepository, baseSchema?: ZodObject<ZodRawShape>, fullSchema?: ZodObject<ZodRawShape>) {
8
+ super(repository, baseSchema, fullSchema);
9
+ }
10
+ }
11
+
12
+ export default CrudSavedQueryService;
13
+ export {CrudSavedQueryService};
package/src/index.ts CHANGED
@@ -18,6 +18,15 @@ import {ExportBodyResponseSchema} from "./schemas/ExportBodyResponseSchema.js"
18
18
  import {ErrorBodyResponseSchema, ValidationErrorBodyResponseSchema} from "./schemas/ErrorBodyResponseSchema.js"
19
19
  import {CrudSchemaBuilder} from "./builders/CrudSchemaBuilder.js";
20
20
 
21
+ import CrudSavedQueryFastifyRoutes from "./crud-saved-query/routes/CrudSavedQueryRoutes.js";
22
+ import {CrudSavedQueryController} from "./crud-saved-query/controllers/CrudSavedQueryController.js";
23
+ import {CrudSavedQueryService} from "./crud-saved-query/services/CrudSavedQueryService.js";
24
+ import {CrudSavedQueryServiceFactory} from "./crud-saved-query/factory/services/CrudSavedQueryServiceFactory.js";
25
+ import CrudSavedQueryMongoRepository from "./crud-saved-query/repository/mongo/CrudSavedQueryMongoRepository.js";
26
+ import CrudSavedQuerySqliteRepository from "./crud-saved-query/repository/sqlite/CrudSavedQuerySqliteRepository.js";
27
+ import CrudSavedQueryPermissions from "./crud-saved-query/permissions/CrudSavedQueryPermissions.js";
28
+ import {CrudSavedQueryModel, CrudSavedQuerySchema} from "./crud-saved-query/models/CrudSavedQueryModel.js";
29
+
21
30
  export type {
22
31
  CustomRequest
23
32
  }
@@ -50,5 +59,15 @@ export {
50
59
  //Builder
51
60
  CrudSchemaBuilder,
52
61
 
62
+ //Crud saved queries
63
+ CrudSavedQueryFastifyRoutes,
64
+ CrudSavedQueryController,
65
+ CrudSavedQueryService,
66
+ CrudSavedQueryServiceFactory,
67
+ CrudSavedQueryMongoRepository,
68
+ CrudSavedQuerySqliteRepository,
69
+ CrudSavedQueryPermissions,
70
+ CrudSavedQueryModel,
71
+ CrudSavedQuerySchema,
53
72
 
54
73
  }