@uql/core 0.4.80 → 0.4.83

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 (57) hide show
  1. package/README.md +11 -11
  2. package/dialect/abstractSqlDialect-spec.d.ts +49 -0
  3. package/dialect/abstractSqlDialect-spec.js +765 -0
  4. package/dialect/abstractSqlDialect.js +11 -17
  5. package/dialect/mysqlDialect.js +2 -2
  6. package/dialect/mysqlDialect.spec.d.ts +6 -0
  7. package/dialect/mysqlDialect.spec.js +33 -0
  8. package/dialect/postgresDialect.js +2 -2
  9. package/dialect/postgresDialect.spec.d.ts +1 -0
  10. package/dialect/postgresDialect.spec.js +139 -0
  11. package/dialect/sqliteDialect.spec.d.ts +1 -0
  12. package/dialect/sqliteDialect.spec.js +12 -0
  13. package/entity/decorator/definition.js +22 -24
  14. package/entity/decorator/definition.spec.d.ts +1 -0
  15. package/entity/decorator/definition.spec.js +725 -0
  16. package/entity/decorator/relation.spec.d.ts +1 -0
  17. package/entity/decorator/relation.spec.js +55 -0
  18. package/options.js +2 -2
  19. package/options.spec.d.ts +1 -0
  20. package/options.spec.js +50 -0
  21. package/package.json +3 -3
  22. package/querier/abstractQuerier-it.d.ts +41 -0
  23. package/querier/abstractQuerier-it.js +410 -0
  24. package/querier/abstractSqlQuerier-it.d.ts +9 -0
  25. package/querier/abstractSqlQuerier-it.js +19 -0
  26. package/querier/abstractSqlQuerier-spec.d.ts +53 -0
  27. package/querier/abstractSqlQuerier-spec.js +607 -0
  28. package/querier/abstractSqlQuerier.js +2 -3
  29. package/querier/decorator/injectQuerier.js +2 -3
  30. package/querier/decorator/injectQuerier.spec.d.ts +1 -0
  31. package/querier/decorator/injectQuerier.spec.js +108 -0
  32. package/querier/decorator/transactional.js +2 -2
  33. package/querier/decorator/transactional.spec.d.ts +1 -0
  34. package/querier/decorator/transactional.spec.js +241 -0
  35. package/repository/genericRepository.spec.d.ts +1 -0
  36. package/repository/genericRepository.spec.js +86 -0
  37. package/test/entityMock.d.ts +180 -0
  38. package/test/entityMock.js +451 -0
  39. package/test/index.d.ts +3 -0
  40. package/test/index.js +7 -0
  41. package/test/it.util.d.ts +4 -0
  42. package/test/it.util.js +60 -0
  43. package/test/spec.util.d.ts +13 -0
  44. package/test/spec.util.js +54 -0
  45. package/type/entity.d.ts +12 -17
  46. package/type/entity.js +1 -1
  47. package/type/utility.d.ts +3 -2
  48. package/type/utility.js +1 -1
  49. package/util/dialect.util.js +2 -3
  50. package/util/dialect.util.spec.d.ts +1 -0
  51. package/util/dialect.util.spec.js +23 -0
  52. package/util/object.util.spec.d.ts +1 -0
  53. package/util/object.util.spec.js +26 -0
  54. package/util/sql.util.spec.d.ts +1 -0
  55. package/util/sql.util.spec.js +164 -0
  56. package/util/string.util.spec.d.ts +1 -0
  57. package/util/string.util.spec.js +26 -0
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const test_1 = require("@uql/core/test");
4
+ const genericRepository_1 = require("./genericRepository");
5
+ describe('repository', () => {
6
+ let repository;
7
+ let querier;
8
+ beforeEach(() => {
9
+ querier = {
10
+ count: jest.fn(),
11
+ findOneById: jest.fn(),
12
+ findOne: jest.fn(),
13
+ findMany: jest.fn(),
14
+ findManyAndCount: jest.fn(),
15
+ insertOne: jest.fn(),
16
+ insertMany: jest.fn(),
17
+ updateOneById: jest.fn(),
18
+ updateMany: jest.fn(),
19
+ saveOne: jest.fn(),
20
+ saveMany: jest.fn(),
21
+ deleteOneById: jest.fn(),
22
+ deleteMany: jest.fn(),
23
+ };
24
+ repository = new genericRepository_1.GenericRepository(test_1.User, querier);
25
+ });
26
+ it('count', async () => {
27
+ await repository.count({});
28
+ expect(querier.count).toHaveBeenCalledWith(test_1.User, {});
29
+ });
30
+ it('findOneById', async () => {
31
+ await repository.findOneById(1);
32
+ expect(querier.findOneById).toHaveBeenCalledWith(test_1.User, 1, undefined);
33
+ });
34
+ it('findOne', async () => {
35
+ await repository.findOne({});
36
+ expect(querier.findOne).toHaveBeenCalledWith(test_1.User, {});
37
+ });
38
+ it('findMany', async () => {
39
+ await repository.findMany({});
40
+ expect(querier.findMany).toHaveBeenCalledWith(test_1.User, {});
41
+ });
42
+ it('findManyAndCount', async () => {
43
+ await repository.findManyAndCount({});
44
+ expect(querier.findManyAndCount).toHaveBeenCalledWith(test_1.User, {});
45
+ });
46
+ it('insertOne', async () => {
47
+ await repository.insertOne({});
48
+ expect(querier.insertOne).toHaveBeenCalledWith(test_1.User, {});
49
+ });
50
+ it('insertMany', async () => {
51
+ await repository.insertMany([{}]);
52
+ expect(querier.insertMany).toHaveBeenCalledWith(test_1.User, [{}]);
53
+ });
54
+ it('updateMany', async () => {
55
+ await repository.updateMany({}, {});
56
+ expect(querier.updateMany).toHaveBeenCalledWith(test_1.User, {}, {});
57
+ });
58
+ it('updateOneById', async () => {
59
+ await repository.updateOneById(1, {});
60
+ expect(querier.updateOneById).toHaveBeenCalledWith(test_1.User, 1, {});
61
+ });
62
+ it('saveOne', async () => {
63
+ await repository.saveOne({});
64
+ expect(querier.saveOne).toHaveBeenCalledWith(test_1.User, {});
65
+ });
66
+ it('insertMany', async () => {
67
+ await repository.saveMany([{}]);
68
+ expect(querier.saveMany).toHaveBeenCalledWith(test_1.User, [{}]);
69
+ });
70
+ it('deleteOneById', async () => {
71
+ await repository.deleteOneById(1);
72
+ expect(querier.deleteOneById).toHaveBeenCalledWith(test_1.User, 1, undefined);
73
+ await repository.deleteOneById(1, { softDelete: false });
74
+ expect(querier.deleteOneById).toHaveBeenCalledWith(test_1.User, 1, { softDelete: false });
75
+ });
76
+ it('deleteMany', async () => {
77
+ await repository.deleteMany({});
78
+ expect(querier.deleteMany).toHaveBeenCalledWith(test_1.User, {}, undefined);
79
+ await repository.deleteMany({}, { softDelete: false });
80
+ expect(querier.deleteMany).toHaveBeenCalledWith(test_1.User, {}, { softDelete: false });
81
+ });
82
+ it('repository property', () => {
83
+ expect(repository.querier).toBe(querier);
84
+ });
85
+ });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpY1JlcG9zaXRvcnkuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZXBvc2l0b3J5L2dlbmVyaWNSZXBvc2l0b3J5LnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5Q0FBc0M7QUFFdEMsMkRBQXdEO0FBRXhELFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO0lBQzFCLElBQUksVUFBNEIsQ0FBQztJQUNqQyxJQUFJLE9BQXlCLENBQUM7SUFFOUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLE9BQU8sR0FBRztZQUNSLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ2hCLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ3RCLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ2xCLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ25CLGdCQUFnQixFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDM0IsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDcEIsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDckIsYUFBYSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDeEIsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDckIsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDbEIsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDbkIsYUFBYSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDeEIsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7U0FDdEIsQ0FBQztRQUNGLFVBQVUsR0FBRyxJQUFJLHFDQUFpQixDQUFDLFdBQUksRUFBRSxPQUFrQixDQUFDLENBQUM7SUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3JC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RUFBRSxDQUFDLENBQUM7UUFDdkQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDbkYsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO1FBQzdCLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVc2VyIH0gZnJvbSAnQHVxbC9jb3JlL3Rlc3QnO1xuaW1wb3J0IHsgUXVlcmllciwgUmVwb3NpdG9yeSB9IGZyb20gJ0B1cWwvY29yZS90eXBlJztcbmltcG9ydCB7IEdlbmVyaWNSZXBvc2l0b3J5IH0gZnJvbSAnLi9nZW5lcmljUmVwb3NpdG9yeSc7XG5cbmRlc2NyaWJlKCdyZXBvc2l0b3J5JywgKCkgPT4ge1xuICBsZXQgcmVwb3NpdG9yeTogUmVwb3NpdG9yeTxVc2VyPjtcbiAgbGV0IHF1ZXJpZXI6IFBhcnRpYWw8UXVlcmllcj47XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgcXVlcmllciA9IHtcbiAgICAgIGNvdW50OiBqZXN0LmZuKCksXG4gICAgICBmaW5kT25lQnlJZDogamVzdC5mbigpLFxuICAgICAgZmluZE9uZTogamVzdC5mbigpLFxuICAgICAgZmluZE1hbnk6IGplc3QuZm4oKSxcbiAgICAgIGZpbmRNYW55QW5kQ291bnQ6IGplc3QuZm4oKSxcbiAgICAgIGluc2VydE9uZTogamVzdC5mbigpLFxuICAgICAgaW5zZXJ0TWFueTogamVzdC5mbigpLFxuICAgICAgdXBkYXRlT25lQnlJZDogamVzdC5mbigpLFxuICAgICAgdXBkYXRlTWFueTogamVzdC5mbigpLFxuICAgICAgc2F2ZU9uZTogamVzdC5mbigpLFxuICAgICAgc2F2ZU1hbnk6IGplc3QuZm4oKSxcbiAgICAgIGRlbGV0ZU9uZUJ5SWQ6IGplc3QuZm4oKSxcbiAgICAgIGRlbGV0ZU1hbnk6IGplc3QuZm4oKSxcbiAgICB9O1xuICAgIHJlcG9zaXRvcnkgPSBuZXcgR2VuZXJpY1JlcG9zaXRvcnkoVXNlciwgcXVlcmllciBhcyBRdWVyaWVyKTtcbiAgfSk7XG5cbiAgaXQoJ2NvdW50JywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlcG9zaXRvcnkuY291bnQoe30pO1xuICAgIGV4cGVjdChxdWVyaWVyLmNvdW50KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChVc2VyLCB7fSk7XG4gIH0pO1xuXG4gIGl0KCdmaW5kT25lQnlJZCcsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCByZXBvc2l0b3J5LmZpbmRPbmVCeUlkKDEpO1xuICAgIGV4cGVjdChxdWVyaWVyLmZpbmRPbmVCeUlkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChVc2VyLCAxLCB1bmRlZmluZWQpO1xuICB9KTtcblxuICBpdCgnZmluZE9uZScsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCByZXBvc2l0b3J5LmZpbmRPbmUoe30pO1xuICAgIGV4cGVjdChxdWVyaWVyLmZpbmRPbmUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFVzZXIsIHt9KTtcbiAgfSk7XG5cbiAgaXQoJ2ZpbmRNYW55JywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlcG9zaXRvcnkuZmluZE1hbnkoe30pO1xuICAgIGV4cGVjdChxdWVyaWVyLmZpbmRNYW55KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChVc2VyLCB7fSk7XG4gIH0pO1xuXG4gIGl0KCdmaW5kTWFueUFuZENvdW50JywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlcG9zaXRvcnkuZmluZE1hbnlBbmRDb3VudCh7fSk7XG4gICAgZXhwZWN0KHF1ZXJpZXIuZmluZE1hbnlBbmRDb3VudCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoVXNlciwge30pO1xuICB9KTtcblxuICBpdCgnaW5zZXJ0T25lJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlcG9zaXRvcnkuaW5zZXJ0T25lKHt9KTtcbiAgICBleHBlY3QocXVlcmllci5pbnNlcnRPbmUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFVzZXIsIHt9KTtcbiAgfSk7XG5cbiAgaXQoJ2luc2VydE1hbnknLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcmVwb3NpdG9yeS5pbnNlcnRNYW55KFt7fV0pO1xuICAgIGV4cGVjdChxdWVyaWVyLmluc2VydE1hbnkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFVzZXIsIFt7fV0pO1xuICB9KTtcblxuICBpdCgndXBkYXRlTWFueScsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCByZXBvc2l0b3J5LnVwZGF0ZU1hbnkoe30sIHt9KTtcbiAgICBleHBlY3QocXVlcmllci51cGRhdGVNYW55KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChVc2VyLCB7fSwge30pO1xuICB9KTtcblxuICBpdCgndXBkYXRlT25lQnlJZCcsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCByZXBvc2l0b3J5LnVwZGF0ZU9uZUJ5SWQoMSwge30pO1xuICAgIGV4cGVjdChxdWVyaWVyLnVwZGF0ZU9uZUJ5SWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFVzZXIsIDEsIHt9KTtcbiAgfSk7XG5cbiAgaXQoJ3NhdmVPbmUnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcmVwb3NpdG9yeS5zYXZlT25lKHt9KTtcbiAgICBleHBlY3QocXVlcmllci5zYXZlT25lKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChVc2VyLCB7fSk7XG4gIH0pO1xuXG4gIGl0KCdpbnNlcnRNYW55JywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlcG9zaXRvcnkuc2F2ZU1hbnkoW3t9XSk7XG4gICAgZXhwZWN0KHF1ZXJpZXIuc2F2ZU1hbnkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFVzZXIsIFt7fV0pO1xuICB9KTtcblxuICBpdCgnZGVsZXRlT25lQnlJZCcsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCByZXBvc2l0b3J5LmRlbGV0ZU9uZUJ5SWQoMSk7XG4gICAgZXhwZWN0KHF1ZXJpZXIuZGVsZXRlT25lQnlJZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoVXNlciwgMSwgdW5kZWZpbmVkKTtcblxuICAgIGF3YWl0IHJlcG9zaXRvcnkuZGVsZXRlT25lQnlJZCgxLCB7IHNvZnREZWxldGU6IGZhbHNlIH0pO1xuICAgIGV4cGVjdChxdWVyaWVyLmRlbGV0ZU9uZUJ5SWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFVzZXIsIDEsIHsgc29mdERlbGV0ZTogZmFsc2UgfSk7XG4gIH0pO1xuXG4gIGl0KCdkZWxldGVNYW55JywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlcG9zaXRvcnkuZGVsZXRlTWFueSh7fSk7XG4gICAgZXhwZWN0KHF1ZXJpZXIuZGVsZXRlTWFueSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoVXNlciwge30sIHVuZGVmaW5lZCk7XG5cbiAgICBhd2FpdCByZXBvc2l0b3J5LmRlbGV0ZU1hbnkoe30sIHsgc29mdERlbGV0ZTogZmFsc2UgfSk7XG4gICAgZXhwZWN0KHF1ZXJpZXIuZGVsZXRlTWFueSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoVXNlciwge30sIHsgc29mdERlbGV0ZTogZmFsc2UgfSk7XG4gIH0pO1xuXG4gIGl0KCdyZXBvc2l0b3J5IHByb3BlcnR5JywgKCkgPT4ge1xuICAgIGV4cGVjdChyZXBvc2l0b3J5LnF1ZXJpZXIpLnRvQmUocXVlcmllcik7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,180 @@
1
+ import { idKey } from '@uql/core/type';
2
+ /**
3
+ * interfaces can (optionally) be used to avoid circular-reference issue between entities.
4
+ */
5
+ export interface IEntity {
6
+ id?: number;
7
+ companyId?: number;
8
+ company?: ICompany;
9
+ creatorId?: number;
10
+ creator?: IUser;
11
+ createdAt?: number;
12
+ updatedAt?: number;
13
+ }
14
+ interface ICompany extends IEntity {
15
+ name?: string;
16
+ description?: string;
17
+ }
18
+ interface IUser extends IEntity {
19
+ name?: string;
20
+ email?: string;
21
+ password?: string;
22
+ profile?: Profile;
23
+ }
24
+ /**
25
+ * an abstract class can (optionally) be used as a "template" for the entities
26
+ * (so the common attributes' declaration is reused).
27
+ */
28
+ export declare abstract class BaseEntity implements IEntity {
29
+ id?: number;
30
+ /**
31
+ * foreign-keys are really simple to specify
32
+ */
33
+ companyId?: number;
34
+ company?: ICompany;
35
+ creatorId?: number;
36
+ creator?: IUser;
37
+ /**
38
+ * 'onInsert' callback can be used to specify a custom mechanism for
39
+ * obtaining the value of a field when inserting:
40
+ */
41
+ createdAt?: number;
42
+ /**
43
+ * 'onUpdate' callback can be used to specify a custom mechanism for
44
+ * obtaining the value of a field when updating:
45
+ */
46
+ updatedAt?: number;
47
+ }
48
+ /**
49
+ * `Company` will inherit all the fields (including the `Id`) declared in `BaseEntity`.
50
+ */
51
+ export declare class Company extends BaseEntity implements ICompany {
52
+ name?: string;
53
+ description?: string;
54
+ }
55
+ /**
56
+ * and entity can specify the table name
57
+ */
58
+ export declare class Profile extends BaseEntity {
59
+ /**
60
+ * an entity can specify its own ID Field and still inherit the others
61
+ * columns/relations from its parent entity.
62
+ * 'onInsert' callback can be used to specify a custom mechanism for
63
+ * auto-generating the primary-key's value when inserting.
64
+ */
65
+ id?: number;
66
+ picture?: string;
67
+ creator?: IUser;
68
+ }
69
+ export declare class User extends BaseEntity implements IUser {
70
+ name?: string;
71
+ email?: string;
72
+ password?: string;
73
+ /**
74
+ * `mappedBy` can be a callback or a string (callback is useful for auto-refactoring).
75
+ */
76
+ profile?: Profile;
77
+ users?: User[];
78
+ }
79
+ export declare class LedgerAccount extends BaseEntity {
80
+ name?: string;
81
+ description?: string;
82
+ parentLedgerId?: number;
83
+ parentLedger?: LedgerAccount;
84
+ }
85
+ export declare class TaxCategory extends BaseEntity {
86
+ /**
87
+ * `idKey` symbol can be used to specify the name of the identifier property,
88
+ * so the type of the identifier can always be type-safe
89
+ * (the identifiers named as `id` or `_id` are auto-inferred).
90
+ */
91
+ [idKey]?: 'pk';
92
+ /**
93
+ * an entity can specify its own ID Field and still inherit the others
94
+ * columns/relations from its parent entity.
95
+ * 'onInsert' callback can be used to specify a custom mechanism for
96
+ * auto-generating the primary-key's value when inserting.
97
+ */
98
+ pk?: string;
99
+ name?: string;
100
+ description?: string;
101
+ }
102
+ export declare class Test {
103
+ name?: string;
104
+ percentage?: number;
105
+ categoryId?: string;
106
+ category?: TaxCategory;
107
+ description?: string;
108
+ }
109
+ export declare class Tax extends BaseEntity {
110
+ name?: string;
111
+ percentage?: number;
112
+ categoryId?: string;
113
+ category?: TaxCategory;
114
+ description?: string;
115
+ }
116
+ /**
117
+ * `softDelete` will make the entity "soft deletable".
118
+ */
119
+ export declare class MeasureUnitCategory extends BaseEntity {
120
+ name?: string;
121
+ measureUnits?: MeasureUnit[];
122
+ /**
123
+ * `onDelete` callback allows to specify which field will be used when deleting/querying this entity.
124
+ */
125
+ deletedAt?: number;
126
+ }
127
+ export declare class MeasureUnit extends BaseEntity {
128
+ name?: string;
129
+ categoryId?: number;
130
+ category?: MeasureUnitCategory;
131
+ deletedAt?: number;
132
+ }
133
+ export declare class Storehouse extends BaseEntity {
134
+ name?: string;
135
+ address?: string;
136
+ description?: string;
137
+ }
138
+ export declare class Item extends BaseEntity {
139
+ name?: string;
140
+ description?: string;
141
+ code?: string;
142
+ buyLedgerAccountId?: number;
143
+ buyLedgerAccount?: LedgerAccount;
144
+ saleLedgerAccountId?: number;
145
+ saleLedgerAccount?: LedgerAccount;
146
+ taxId?: number;
147
+ tax?: Tax;
148
+ measureUnitId?: number;
149
+ measureUnit?: MeasureUnit;
150
+ salePrice?: number;
151
+ inventoryable?: boolean;
152
+ tags?: Tag[];
153
+ tagsCount?: number;
154
+ }
155
+ export declare class Tag extends BaseEntity {
156
+ name?: string;
157
+ items?: Item[];
158
+ itemsCount?: number;
159
+ }
160
+ export declare class ItemTag {
161
+ id?: number;
162
+ itemId?: number;
163
+ tagId?: number;
164
+ }
165
+ export declare class InventoryAdjustment extends BaseEntity {
166
+ itemAdjustments?: ItemAdjustment[];
167
+ date?: Date;
168
+ description?: string;
169
+ }
170
+ export declare class ItemAdjustment extends BaseEntity {
171
+ itemId?: number;
172
+ item?: Item;
173
+ number?: number;
174
+ buyPrice?: number;
175
+ storehouseId?: number;
176
+ storehouse?: Storehouse;
177
+ inventoryAdjustmentId?: number;
178
+ inventoryAdjustment?: InventoryAdjustment;
179
+ }
180
+ export {};