@accounter/server 0.0.9-alpha-20251210155614-e6e65aaecafef9e8fedd0b933f613ffcf478cecf → 0.0.9-alpha-20251210170728-fe2c044a6279c36a9ba58b13bae56b181e8f85f5

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 (144) hide show
  1. package/CHANGELOG.md +27 -5
  2. package/dist/green-invoice-graphql/src/mesh-artifacts/index.d.ts +1 -1
  3. package/dist/server/src/__tests__/factories/business.d.ts +2 -2
  4. package/dist/server/src/__tests__/factories/business.js +5 -4
  5. package/dist/server/src/__tests__/factories/business.js.map +1 -1
  6. package/dist/server/src/__tests__/factories/business.test.js +2 -2
  7. package/dist/server/src/__tests__/factories/business.test.js.map +1 -1
  8. package/dist/server/src/__tests__/factories/charge.d.ts +9 -9
  9. package/dist/server/src/__tests__/factories/charge.js +15 -15
  10. package/dist/server/src/__tests__/factories/charge.js.map +1 -1
  11. package/dist/server/src/__tests__/factories/charge.test.js +14 -14
  12. package/dist/server/src/__tests__/factories/charge.test.js.map +1 -1
  13. package/dist/server/src/__tests__/factories/document.d.ts +9 -9
  14. package/dist/server/src/__tests__/factories/document.js +11 -11
  15. package/dist/server/src/__tests__/factories/document.js.map +1 -1
  16. package/dist/server/src/__tests__/factories/document.test.js +38 -38
  17. package/dist/server/src/__tests__/factories/document.test.js.map +1 -1
  18. package/dist/server/src/__tests__/factories/financial-account.js +2 -2
  19. package/dist/server/src/__tests__/factories/financial-account.js.map +1 -1
  20. package/dist/server/src/__tests__/factories/financial-account.test.js +7 -7
  21. package/dist/server/src/__tests__/factories/financial-account.test.js.map +1 -1
  22. package/dist/server/src/__tests__/factories/index.d.ts +2 -2
  23. package/dist/server/src/__tests__/factories/index.js +2 -2
  24. package/dist/server/src/__tests__/factories/index.js.map +1 -1
  25. package/dist/server/src/__tests__/factories/index.test.js +12 -12
  26. package/dist/server/src/__tests__/factories/index.test.js.map +1 -1
  27. package/dist/server/src/__tests__/factories/tax-category.d.ts +3 -3
  28. package/dist/server/src/__tests__/factories/tax-category.js +6 -5
  29. package/dist/server/src/__tests__/factories/tax-category.js.map +1 -1
  30. package/dist/server/src/__tests__/factories/tax-category.test.js +4 -4
  31. package/dist/server/src/__tests__/factories/tax-category.test.js.map +1 -1
  32. package/dist/server/src/__tests__/factories/transaction.d.ts +7 -7
  33. package/dist/server/src/__tests__/factories/transaction.js +11 -11
  34. package/dist/server/src/__tests__/factories/transaction.js.map +1 -1
  35. package/dist/server/src/__tests__/factories/transaction.test.js +27 -27
  36. package/dist/server/src/__tests__/factories/transaction.test.js.map +1 -1
  37. package/dist/server/src/__tests__/fixtures/expenses/expense-scenario-a.js +20 -20
  38. package/dist/server/src/__tests__/fixtures/expenses/expense-scenario-a.js.map +1 -1
  39. package/dist/server/src/__tests__/fixtures/expenses/expense-scenario-b.js +20 -20
  40. package/dist/server/src/__tests__/fixtures/expenses/expense-scenario-b.js.map +1 -1
  41. package/dist/server/src/__tests__/fixtures/expenses/expense-scenario-b.test.js +8 -8
  42. package/dist/server/src/__tests__/fixtures/expenses/expense-scenario-b.test.js.map +1 -1
  43. package/dist/server/src/__tests__/helpers/db-setup.d.ts +0 -1
  44. package/dist/server/src/__tests__/helpers/db-setup.js +0 -2
  45. package/dist/server/src/__tests__/helpers/db-setup.js.map +1 -1
  46. package/dist/server/src/__tests__/helpers/fixture-loader.js +2 -2
  47. package/dist/server/src/__tests__/helpers/fixture-loader.js.map +1 -1
  48. package/dist/server/src/__tests__/helpers/fixture-loader.test.js +32 -29
  49. package/dist/server/src/__tests__/helpers/fixture-loader.test.js.map +1 -1
  50. package/dist/server/src/__tests__/helpers/fixture-validation.test.js +50 -50
  51. package/dist/server/src/__tests__/helpers/fixture-validation.test.js.map +1 -1
  52. package/dist/server/src/__tests__/helpers/seed-helpers.business.test.js +23 -31
  53. package/dist/server/src/__tests__/helpers/seed-helpers.business.test.js.map +1 -1
  54. package/dist/server/src/__tests__/helpers/seed-helpers.concurrent.test.js +8 -8
  55. package/dist/server/src/__tests__/helpers/seed-helpers.concurrent.test.js.map +1 -1
  56. package/dist/server/src/__tests__/helpers/seed-helpers.financial-entity.test.js +41 -50
  57. package/dist/server/src/__tests__/helpers/seed-helpers.financial-entity.test.js.map +1 -1
  58. package/dist/server/src/__tests__/helpers/seed-helpers.tax-category.test.js +23 -31
  59. package/dist/server/src/__tests__/helpers/seed-helpers.tax-category.test.js.map +1 -1
  60. package/dist/server/src/__tests__/seed-admin-context.integration.test.js +128 -131
  61. package/dist/server/src/__tests__/seed-admin-context.integration.test.js.map +1 -1
  62. package/dist/server/src/demo-fixtures/__tests__/deterministic-uuid.test.js +58 -0
  63. package/dist/server/src/demo-fixtures/__tests__/deterministic-uuid.test.js.map +1 -0
  64. package/dist/server/src/demo-fixtures/helpers/deterministic-uuid.d.ts +50 -0
  65. package/dist/server/src/demo-fixtures/helpers/deterministic-uuid.js +66 -0
  66. package/dist/server/src/demo-fixtures/helpers/deterministic-uuid.js.map +1 -0
  67. package/dist/server/src/modules/admin-context/{heplers → helpers}/admin-context.helper.d.ts +1 -1
  68. package/dist/server/src/modules/admin-context/{heplers → helpers}/admin-context.helper.js +2 -2
  69. package/dist/server/src/modules/admin-context/{heplers → helpers}/admin-context.helper.js.map +1 -1
  70. package/dist/server/src/modules/admin-context/resolvers/admin-context.resolvers.js +1 -1
  71. package/dist/server/src/modules/business-trips/providers/business-trips.provider.d.ts +1 -1
  72. package/dist/server/src/modules/business-trips/providers/business-trips.provider.js +1 -1
  73. package/dist/server/src/modules/business-trips/providers/business-trips.provider.js.map +1 -1
  74. package/dist/server/src/modules/charges/helpers/common.helper.js +3 -3
  75. package/dist/server/src/modules/charges/helpers/common.helper.js.map +1 -1
  76. package/dist/server/src/modules/charges/helpers/{merge-charges.hepler.js → merge-charges.helper.js} +6 -6
  77. package/dist/server/src/modules/charges/helpers/{merge-charges.hepler.js.map → merge-charges.helper.js.map} +1 -1
  78. package/dist/server/src/modules/charges/resolvers/charges.resolver.js +1 -1
  79. package/dist/server/src/modules/charges-matcher/__tests__/auto-match-integration.test.js +2 -2
  80. package/dist/server/src/modules/charges-matcher/__tests__/auto-match-integration.test.js.map +1 -1
  81. package/dist/server/src/modules/charges-matcher/providers/charges-matcher.provider.js +1 -1
  82. package/dist/server/src/modules/charges-matcher/providers/charges-matcher.provider.js.map +1 -1
  83. package/dist/server/src/modules/corn-jobs/resolvers/corn-jobs.resolver.js +1 -1
  84. package/dist/server/src/modules/corn-jobs/resolvers/corn-jobs.resolver.js.map +1 -1
  85. package/dist/server/src/modules/ledger/__tests__/helpers/ledger-assertions.d.ts +0 -2
  86. package/dist/server/src/modules/ledger/__tests__/helpers/ledger-assertions.js +0 -4
  87. package/dist/server/src/modules/ledger/__tests__/helpers/ledger-assertions.js.map +1 -1
  88. package/dist/server/src/modules/ledger/__tests__/ledger-scenario-a.integration.test.js +20 -20
  89. package/dist/server/src/modules/ledger/__tests__/ledger-scenario-a.integration.test.js.map +1 -1
  90. package/dist/server/src/modules/ledger/__tests__/ledger-scenario-b.integration.test.js +21 -21
  91. package/dist/server/src/modules/ledger/__tests__/ledger-scenario-b.integration.test.js.map +1 -1
  92. package/dist/server/src/modules/transactions/helpers/common.helper.js +11 -6
  93. package/dist/server/src/modules/transactions/helpers/common.helper.js.map +1 -1
  94. package/package.json +1 -1
  95. package/src/__tests__/factories/business.test.ts +3 -3
  96. package/src/__tests__/factories/business.ts +5 -4
  97. package/src/__tests__/factories/charge.test.ts +14 -14
  98. package/src/__tests__/factories/charge.ts +16 -16
  99. package/src/__tests__/factories/document.test.ts +38 -38
  100. package/src/__tests__/factories/document.ts +11 -11
  101. package/src/__tests__/factories/financial-account.test.ts +7 -7
  102. package/src/__tests__/factories/financial-account.ts +3 -3
  103. package/src/__tests__/factories/index.test.ts +12 -12
  104. package/src/__tests__/factories/index.ts +2 -2
  105. package/src/__tests__/factories/tax-category.test.ts +4 -4
  106. package/src/__tests__/factories/tax-category.ts +7 -6
  107. package/src/__tests__/factories/transaction.test.ts +27 -27
  108. package/src/__tests__/factories/transaction.ts +11 -11
  109. package/src/__tests__/fixtures/expenses/expense-scenario-a.ts +20 -20
  110. package/src/__tests__/fixtures/expenses/expense-scenario-b.test.ts +8 -8
  111. package/src/__tests__/fixtures/expenses/expense-scenario-b.ts +20 -20
  112. package/src/__tests__/helpers/db-setup.ts +0 -3
  113. package/src/__tests__/helpers/fixture-loader.test.ts +31 -29
  114. package/src/__tests__/helpers/fixture-loader.ts +2 -2
  115. package/src/__tests__/helpers/fixture-validation.test.ts +50 -50
  116. package/src/__tests__/helpers/seed-helpers.business.test.ts +145 -147
  117. package/src/__tests__/helpers/seed-helpers.concurrent.test.ts +10 -10
  118. package/src/__tests__/helpers/seed-helpers.financial-entity.test.ts +218 -231
  119. package/src/__tests__/helpers/seed-helpers.tax-category.test.ts +162 -164
  120. package/src/__tests__/seed-admin-context.integration.test.ts +199 -208
  121. package/src/demo-fixtures/__tests__/deterministic-uuid.test.ts +75 -0
  122. package/src/demo-fixtures/helpers/deterministic-uuid.ts +68 -0
  123. package/src/modules/admin-context/{heplers → helpers}/admin-context.helper.ts +3 -3
  124. package/src/modules/admin-context/resolvers/admin-context.resolvers.ts +1 -1
  125. package/src/modules/business-trips/providers/business-trips.provider.ts +1 -1
  126. package/src/modules/charges/helpers/common.helper.ts +3 -3
  127. package/src/modules/charges/helpers/{merge-charges.hepler.ts → merge-charges.helper.ts} +5 -5
  128. package/src/modules/charges/resolvers/charges.resolver.ts +1 -1
  129. package/src/modules/charges-matcher/__tests__/auto-match-integration.test.ts +2 -2
  130. package/src/modules/charges-matcher/providers/charges-matcher.provider.ts +1 -1
  131. package/src/modules/corn-jobs/resolvers/corn-jobs.resolver.ts +1 -1
  132. package/src/modules/ledger/__tests__/helpers/ledger-assertions.ts +0 -5
  133. package/src/modules/ledger/__tests__/ledger-scenario-a.integration.test.ts +20 -20
  134. package/src/modules/ledger/__tests__/ledger-scenario-b.integration.test.ts +21 -21
  135. package/src/modules/transactions/helpers/common.helper.ts +12 -6
  136. package/dist/server/src/__tests__/factories/ids.d.ts +0 -22
  137. package/dist/server/src/__tests__/factories/ids.js +0 -46
  138. package/dist/server/src/__tests__/factories/ids.js.map +0 -1
  139. package/dist/server/src/__tests__/factories/ids.test.js +0 -71
  140. package/dist/server/src/__tests__/factories/ids.test.js.map +0 -1
  141. package/src/__tests__/factories/ids.test.ts +0 -80
  142. package/src/__tests__/factories/ids.ts +0 -49
  143. /package/dist/server/src/{__tests__/factories/ids.test.d.ts → demo-fixtures/__tests__/deterministic-uuid.test.d.ts} +0 -0
  144. /package/dist/server/src/modules/charges/helpers/{merge-charges.hepler.d.ts → merge-charges.helper.d.ts} +0 -0
@@ -1,151 +1,148 @@
1
- import { describe, expect, it, beforeAll, afterAll, beforeEach, afterEach } from 'vitest';
2
- import pg from 'pg';
3
- import { testDbConfig } from './helpers/test-db-config.js';
1
+ import { describe, expect, it, beforeAll, afterAll } from 'vitest';
2
+ import { TestDatabase } from './helpers/db-setup.js';
4
3
  import { seedAdminCore } from '../../scripts/seed-admin-context.js';
5
4
  describe('seedAdminCore integration', () => {
6
- let pool;
7
- let client;
5
+ let db;
8
6
  beforeAll(async () => {
9
- pool = new pg.Pool(testDbConfig);
10
- client = await pool.connect();
7
+ db = new TestDatabase();
8
+ await db.connect();
11
9
  });
12
10
  afterAll(async () => {
13
- client.release();
14
- await pool.end();
15
- });
16
- beforeEach(async () => {
17
- await client.query('BEGIN');
18
- });
19
- afterEach(async () => {
20
- await client.query('ROLLBACK');
11
+ await db.close();
21
12
  });
22
13
  it('should create admin business context with all required entities', async () => {
23
- // Execute seed
24
- const { adminEntityId } = await seedAdminCore(client);
25
- // Verify admin entity exists
26
- expect(adminEntityId).toBeTruthy();
27
- expect(adminEntityId).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i);
28
- // Verify admin financial entity
29
- const adminEntity = await client.query(`SELECT * FROM accounter_schema.financial_entities WHERE id = $1`, [adminEntityId]);
30
- expect(adminEntity.rows).toHaveLength(1);
31
- expect(adminEntity.rows[0].name).toBe('Admin Business');
32
- expect(adminEntity.rows[0].type).toBe('business');
33
- expect(adminEntity.rows[0].owner_id).toBe(adminEntityId); // self-owned
34
- // Verify admin business record
35
- const adminBusiness = await client.query(`SELECT * FROM accounter_schema.businesses WHERE id = $1`, [adminEntityId]);
36
- expect(adminBusiness.rows).toHaveLength(1);
37
- // Verify user_context exists and has required fields
38
- const userContext = await client.query(`SELECT * FROM accounter_schema.user_context WHERE owner_id = $1`, [adminEntityId]);
39
- expect(userContext.rows).toHaveLength(1);
40
- const context = userContext.rows[0];
41
- // Verify currencies
42
- expect(context.default_local_currency).toBe('ILS');
43
- expect(context.default_fiat_currency_for_crypto_conversions).toBe('USD');
44
- // Verify required authority businesses exist
45
- const vatBusiness = await client.query(`SELECT * FROM accounter_schema.businesses WHERE id = $1`, [context.vat_business_id]);
46
- expect(vatBusiness.rows).toHaveLength(1);
47
- const taxBusiness = await client.query(`SELECT * FROM accounter_schema.businesses WHERE id = $1`, [context.tax_business_id]);
48
- expect(taxBusiness.rows).toHaveLength(1);
49
- const socialSecurityBusiness = await client.query(`SELECT * FROM accounter_schema.businesses WHERE id = $1`, [context.social_security_business_id]);
50
- expect(socialSecurityBusiness.rows).toHaveLength(1);
51
- // Verify required tax categories exist
52
- const requiredTaxCategoryFields = [
53
- 'default_tax_category_id',
54
- 'input_vat_tax_category_id',
55
- 'output_vat_tax_category_id',
56
- 'tax_expenses_tax_category_id',
57
- 'exchange_rate_tax_category_id',
58
- 'income_exchange_rate_tax_category_id',
59
- 'exchange_rate_revaluation_tax_category_id',
60
- 'fee_tax_category_id',
61
- 'general_fee_tax_category_id',
62
- 'fine_tax_category_id',
63
- 'untaxable_gifts_tax_category_id',
64
- 'balance_cancellation_tax_category_id',
65
- 'development_foreign_tax_category_id',
66
- 'development_local_tax_category_id',
67
- 'expenses_to_pay_tax_category_id',
68
- 'expenses_in_advance_tax_category_id',
69
- 'income_to_collect_tax_category_id',
70
- 'income_in_advance_tax_category_id',
71
- 'salary_excess_expenses_tax_category_id',
72
- ];
73
- for (const field of requiredTaxCategoryFields) {
74
- const taxCategoryId = context[field];
75
- expect(taxCategoryId).toBeTruthy();
76
- const taxCategory = await client.query(`SELECT * FROM accounter_schema.tax_categories WHERE id = $1`, [taxCategoryId]);
77
- expect(taxCategory.rows).toHaveLength(1);
78
- }
14
+ await db.withTransaction(async (client) => {
15
+ // Execute seed
16
+ const { adminEntityId } = await seedAdminCore(client);
17
+ // Verify admin entity exists
18
+ expect(adminEntityId).toBeTruthy();
19
+ expect(adminEntityId).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i);
20
+ // Verify admin financial entity
21
+ const adminEntity = await client.query(`SELECT * FROM accounter_schema.financial_entities WHERE id = $1`, [adminEntityId]);
22
+ expect(adminEntity.rows).toHaveLength(1);
23
+ expect(adminEntity.rows[0].name).toBe('Admin Business');
24
+ expect(adminEntity.rows[0].type).toBe('business');
25
+ expect(adminEntity.rows[0].owner_id).toBe(adminEntityId); // self-owned
26
+ // Verify admin business record
27
+ const adminBusiness = await client.query(`SELECT * FROM accounter_schema.businesses WHERE id = $1`, [adminEntityId]);
28
+ expect(adminBusiness.rows).toHaveLength(1);
29
+ // Verify user_context exists and has required fields
30
+ const userContext = await client.query(`SELECT * FROM accounter_schema.user_context WHERE owner_id = $1`, [adminEntityId]);
31
+ expect(userContext.rows).toHaveLength(1);
32
+ const context = userContext.rows[0];
33
+ // Verify currencies
34
+ expect(context.default_local_currency).toBe('ILS');
35
+ expect(context.default_fiat_currency_for_crypto_conversions).toBe('USD');
36
+ // Verify required authority businesses exist
37
+ const vatBusiness = await client.query(`SELECT * FROM accounter_schema.businesses WHERE id = $1`, [context.vat_business_id]);
38
+ expect(vatBusiness.rows).toHaveLength(1);
39
+ const taxBusiness = await client.query(`SELECT * FROM accounter_schema.businesses WHERE id = $1`, [context.tax_business_id]);
40
+ expect(taxBusiness.rows).toHaveLength(1);
41
+ const socialSecurityBusiness = await client.query(`SELECT * FROM accounter_schema.businesses WHERE id = $1`, [context.social_security_business_id]);
42
+ expect(socialSecurityBusiness.rows).toHaveLength(1);
43
+ // Verify required tax categories exist
44
+ const requiredTaxCategoryFields = [
45
+ 'default_tax_category_id',
46
+ 'input_vat_tax_category_id',
47
+ 'output_vat_tax_category_id',
48
+ 'tax_expenses_tax_category_id',
49
+ 'exchange_rate_tax_category_id',
50
+ 'income_exchange_rate_tax_category_id',
51
+ 'exchange_rate_revaluation_tax_category_id',
52
+ 'fee_tax_category_id',
53
+ 'general_fee_tax_category_id',
54
+ 'fine_tax_category_id',
55
+ 'untaxable_gifts_tax_category_id',
56
+ 'balance_cancellation_tax_category_id',
57
+ 'development_foreign_tax_category_id',
58
+ 'development_local_tax_category_id',
59
+ 'expenses_to_pay_tax_category_id',
60
+ 'expenses_in_advance_tax_category_id',
61
+ 'income_to_collect_tax_category_id',
62
+ 'income_in_advance_tax_category_id',
63
+ 'salary_excess_expenses_tax_category_id',
64
+ ];
65
+ for (const field of requiredTaxCategoryFields) {
66
+ const taxCategoryId = context[field];
67
+ expect(taxCategoryId).toBeTruthy();
68
+ const taxCategory = await client.query(`SELECT * FROM accounter_schema.tax_categories WHERE id = $1`, [taxCategoryId]);
69
+ expect(taxCategory.rows).toHaveLength(1);
70
+ }
71
+ });
79
72
  });
80
73
  it('should be idempotent (safe to call multiple times)', async () => {
81
- // Call seed twice in same transaction
82
- await seedAdminCore(client);
83
- // Count entities before second call
84
- const countBefore = await client.query(`SELECT COUNT(*) as count FROM accounter_schema.financial_entities`);
85
- const entitiesBeforeSecondCall = parseInt(countBefore.rows[0].count);
86
- // Second call should reuse existing entities
87
- await seedAdminCore(client);
88
- // Count entities after second call - should be same
89
- const countAfter = await client.query(`SELECT COUNT(*) as count FROM accounter_schema.financial_entities`);
90
- const entitiesAfterSecondCall = parseInt(countAfter.rows[0].count);
91
- // Idempotent: no new entities created on second call
92
- expect(entitiesAfterSecondCall).toBe(entitiesBeforeSecondCall);
93
- // Verify only one user_context exists
94
- const userContextCount = await client.query(`SELECT COUNT(*) as count FROM accounter_schema.user_context`);
95
- expect(userContextCount.rows[0].count).toBe('1');
74
+ await db.withTransaction(async (client) => {
75
+ // Call seed twice in same transaction
76
+ await seedAdminCore(client);
77
+ // Count entities before second call
78
+ const countBefore = await client.query(`SELECT COUNT(*) as count FROM accounter_schema.financial_entities`);
79
+ const entitiesBeforeSecondCall = parseInt(countBefore.rows[0].count);
80
+ // Second call should reuse existing entities
81
+ await seedAdminCore(client);
82
+ // Count entities after second call - should be same
83
+ const countAfter = await client.query(`SELECT COUNT(*) as count FROM accounter_schema.financial_entities`);
84
+ const entitiesAfterSecondCall = parseInt(countAfter.rows[0].count);
85
+ // Idempotent: no new entities created on second call
86
+ expect(entitiesAfterSecondCall).toBe(entitiesBeforeSecondCall);
87
+ // Verify only one user_context exists
88
+ const userContextCount = await client.query(`SELECT COUNT(*) as count FROM accounter_schema.user_context`);
89
+ expect(userContextCount.rows[0].count).toBe('1');
90
+ });
96
91
  });
97
92
  it('should not leak data between tests (transactional isolation)', async () => {
98
- const TEMP_NAME = 'seed-admin-context.integration.test.ts: temp rollback entity';
99
- // Insert a throwaway entity inside a transaction
100
- const insertEntity = await client.query(`INSERT INTO accounter_schema.financial_entities (name, type)
93
+ await db.withTransaction(async (client) => {
94
+ const TEMP_NAME = 'seed-admin-context.integration.test.ts: temp rollback entity';
95
+ // Insert a throwaway entity inside a transaction
96
+ const insertEntity = await client.query(`INSERT INTO accounter_schema.financial_entities (name, type)
101
97
  VALUES ($1, 'business')
102
98
  RETURNING id`, [TEMP_NAME]);
103
- const tempId = insertEntity.rows[0].id;
104
- await client.query(`INSERT INTO accounter_schema.businesses (id) VALUES ($1)`, [tempId]);
105
- // Verify exists within the same transaction
106
- const inTx = await client.query(`SELECT COUNT(*) as count FROM accounter_schema.financial_entities WHERE name = $1`, [TEMP_NAME]);
107
- expect(inTx.rows[0].count).toBe('1');
108
- // Note: The afterEach hook will rollback this transaction,
109
- // and the next test will start with a clean slate
99
+ const tempId = insertEntity.rows[0].id;
100
+ await client.query(`INSERT INTO accounter_schema.businesses (id) VALUES ($1)`, [tempId]);
101
+ // Verify exists within the same transaction
102
+ const inTx = await client.query(`SELECT COUNT(*) as count FROM accounter_schema.financial_entities WHERE name = $1`, [TEMP_NAME]);
103
+ expect(inTx.rows[0].count).toBe('1');
104
+ // Note: withTransaction automatically rolls back at the end,
105
+ // so the next test will start with a clean slate
106
+ });
110
107
  });
111
108
  it('should create all expected entity counts', async () => {
112
- await seedAdminCore(client);
113
- // Count businesses (Admin + 3 authorities = 4)
114
- const businessCount = await client.query(`SELECT COUNT(*) as count FROM accounter_schema.businesses`);
115
- expect(parseInt(businessCount.rows[0].count)).toBeGreaterThanOrEqual(4);
116
- // Count tax categories (3 authority + 12 general + 4 cross-year = 19)
117
- const taxCategoryCount = await client.query(`SELECT COUNT(*) as count FROM accounter_schema.tax_categories`);
118
- expect(parseInt(taxCategoryCount.rows[0].count)).toBeGreaterThanOrEqual(19);
109
+ await db.withTransaction(async (client) => {
110
+ await seedAdminCore(client);
111
+ // Count businesses (Admin + 3 authorities = 4)
112
+ const businessCount = await client.query(`SELECT COUNT(*) as count FROM accounter_schema.businesses`);
113
+ expect(parseInt(businessCount.rows[0].count)).toBeGreaterThanOrEqual(4);
114
+ // Count tax categories (3 authority + 12 general + 4 cross-year = 19)
115
+ const taxCategoryCount = await client.query(`SELECT COUNT(*) as count FROM accounter_schema.tax_categories`);
116
+ expect(parseInt(taxCategoryCount.rows[0].count)).toBeGreaterThanOrEqual(19);
117
+ });
119
118
  });
120
119
  it('should validate foreign key relationships', async () => {
121
- const { adminEntityId } = await seedAdminCore(client);
122
- // Get user_context
123
- const userContext = await client.query(`SELECT * FROM accounter_schema.user_context WHERE owner_id = $1`, [adminEntityId]);
124
- const context = userContext.rows[0];
125
- // Verify all business FKs point to valid financial_entities
126
- const businessFields = [
127
- 'vat_business_id',
128
- 'tax_business_id',
129
- 'social_security_business_id',
130
- ];
131
- for (const field of businessFields) {
132
- const businessId = context[field];
133
- const entity = await client.query(`SELECT * FROM accounter_schema.financial_entities WHERE id = $1`, [businessId]);
134
- expect(entity.rows).toHaveLength(1);
135
- expect(entity.rows[0].type).toBe('business');
136
- }
137
- // Verify all tax_category FKs point to valid financial_entities
138
- const taxCategoryFields = [
139
- 'default_tax_category_id',
140
- 'input_vat_tax_category_id',
141
- 'output_vat_tax_category_id',
142
- ];
143
- for (const field of taxCategoryFields) {
144
- const taxCategoryId = context[field];
145
- const entity = await client.query(`SELECT * FROM accounter_schema.financial_entities WHERE id = $1`, [taxCategoryId]);
146
- expect(entity.rows).toHaveLength(1);
147
- expect(entity.rows[0].type).toBe('tax_category');
148
- }
120
+ await db.withTransaction(async (client) => {
121
+ const { adminEntityId } = await seedAdminCore(client);
122
+ // Get user_context
123
+ const userContext = await client.query(`SELECT * FROM accounter_schema.user_context WHERE owner_id = $1`, [adminEntityId]);
124
+ const context = userContext.rows[0];
125
+ // Verify all business FKs point to valid financial_entities
126
+ const businessFields = ['vat_business_id', 'tax_business_id', 'social_security_business_id'];
127
+ for (const field of businessFields) {
128
+ const businessId = context[field];
129
+ const entity = await client.query(`SELECT * FROM accounter_schema.financial_entities WHERE id = $1`, [businessId]);
130
+ expect(entity.rows).toHaveLength(1);
131
+ expect(entity.rows[0].type).toBe('business');
132
+ }
133
+ // Verify all tax_category FKs point to valid financial_entities
134
+ const taxCategoryFields = [
135
+ 'default_tax_category_id',
136
+ 'input_vat_tax_category_id',
137
+ 'output_vat_tax_category_id',
138
+ ];
139
+ for (const field of taxCategoryFields) {
140
+ const taxCategoryId = context[field];
141
+ const entity = await client.query(`SELECT * FROM accounter_schema.financial_entities WHERE id = $1`, [taxCategoryId]);
142
+ expect(entity.rows).toHaveLength(1);
143
+ expect(entity.rows[0].type).toBe('tax_category');
144
+ }
145
+ });
149
146
  });
150
147
  });
151
148
  //# sourceMappingURL=seed-admin-context.integration.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"seed-admin-context.integration.test.js","sourceRoot":"","sources":["../../../../src/__tests__/seed-admin-context.integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seed-admin-context.integration.test.js","sourceRoot":"","sources":["../../../../src/__tests__/seed-admin-context.integration.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { makeUUID } from '../helpers/deterministic-uuid.js';
3
+ describe('deterministic-uuid', () => {
4
+ describe('makeUUID', () => {
5
+ it('generates same UUID for same inputs', () => {
6
+ const uuid1 = makeUUID('business', 'acme-consulting-llc');
7
+ const uuid2 = makeUUID('business', 'acme-consulting-llc');
8
+ expect(uuid1).toBe(uuid2);
9
+ expect(uuid1).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/);
10
+ });
11
+ it('generates different UUIDs for different names', () => {
12
+ const uuid1 = makeUUID('business', 'acme-llc');
13
+ const uuid2 = makeUUID('business', 'acme-corp');
14
+ expect(uuid1).not.toBe(uuid2);
15
+ });
16
+ it('generates different UUIDs for different namespaces', () => {
17
+ const businessUUID = makeUUID('business', 'acme');
18
+ const chargeUUID = makeUUID('charge', 'acme');
19
+ expect(businessUUID).not.toBe(chargeUUID);
20
+ });
21
+ it('includes namespace in composite key', () => {
22
+ // Same name, different namespace types
23
+ const bizUUID = makeUUID('business', 'test-entity');
24
+ const transactionUUID = makeUUID('transaction', 'test-entity');
25
+ const documentUUID = makeUUID('document', 'test-entity');
26
+ expect(bizUUID).not.toBe(transactionUUID);
27
+ expect(bizUUID).not.toBe(documentUUID);
28
+ expect(transactionUUID).not.toBe(documentUUID);
29
+ });
30
+ it('generates valid UUID v5 format', () => {
31
+ const uuid = makeUUID('charge', 'monthly-invoice-2024-11');
32
+ // UUID v5 format: xxxxxxxx-xxxx-5xxx-yxxx-xxxxxxxxxxxx
33
+ // where y is one of [8, 9, a, b]
34
+ expect(uuid).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/);
35
+ });
36
+ it('handles kebab-case names correctly', () => {
37
+ const uuid1 = makeUUID('business', 'us-supplier-acme-llc');
38
+ const uuid2 = makeUUID('business', 'us-supplier-acme-llc');
39
+ expect(uuid1).toBe(uuid2);
40
+ });
41
+ it('handles numeric components in names', () => {
42
+ const uuid1 = makeUUID('charge', 'invoice-2024-11-15');
43
+ const uuid2 = makeUUID('charge', 'invoice-2024-11-15');
44
+ expect(uuid1).toBe(uuid2);
45
+ });
46
+ it('is case-sensitive for names', () => {
47
+ const uuid1 = makeUUID('business', 'acme-llc');
48
+ const uuid2 = makeUUID('business', 'ACME-LLC');
49
+ expect(uuid1).not.toBe(uuid2);
50
+ });
51
+ it('is case-sensitive for namespaces', () => {
52
+ const uuid1 = makeUUID('business', 'acme');
53
+ const uuid2 = makeUUID('Business', 'acme');
54
+ expect(uuid1).not.toBe(uuid2);
55
+ });
56
+ });
57
+ });
58
+ //# sourceMappingURL=deterministic-uuid.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deterministic-uuid.test.js","sourceRoot":"","sources":["../../../../../src/demo-fixtures/__tests__/deterministic-uuid.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Generate deterministic UUID v5 from semantic name.
3
+ *
4
+ * This function creates stable, reproducible UUIDs for demo/staging data entities.
5
+ * The same namespace + name combination will always produce the same UUID across
6
+ * deployments, making it safe to reference these IDs in documentation, screenshots,
7
+ * and external links.
8
+ *
9
+ * @param namespace - Entity type: 'business', 'charge', 'transaction', 'document', etc.
10
+ * @param name - Semantic identifier (kebab-case recommended)
11
+ * @returns UUID v5 string (e.g., '550e8400-e29b-41d4-a716-446655440000')
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // Business entity
16
+ * makeUUID('business', 'acme-consulting-llc')
17
+ * // => Always produces same UUID
18
+ *
19
+ * // Charge entity
20
+ * makeUUID('charge', 'consulting-invoice-2024-11')
21
+ * // => Stable across deploys
22
+ *
23
+ * // Financial account
24
+ * makeUUID('financial-account', 'bank-usd-account')
25
+ * // => Different from makeUUID('business', 'bank-usd-account')
26
+ * ```
27
+ *
28
+ * @remarks
29
+ * **Naming Conventions:**
30
+ * - Use kebab-case for all semantic names
31
+ * - Combine entity type + descriptive name ensures no collisions
32
+ * - Never change a semantic name once deployed (breaks external links)
33
+ * - For updates to same entity, append version: `acme-consulting-llc-v2`
34
+ *
35
+ * **Stability Warning:**
36
+ * Once a UUID is generated and used in staging/production, the semantic name
37
+ * MUST NOT be changed. Doing so will generate a different UUID and break:
38
+ * - External documentation with embedded links
39
+ * - Screenshots with visible UUIDs
40
+ * - Any hardcoded references in client applications
41
+ *
42
+ * If you need to modify an entity, create a new semantic name with a version suffix.
43
+ */
44
+ export declare function makeUUID(namespace: string, name: string): string;
45
+ /**
46
+ * Backward compatible adapter for legacy single-argument API.
47
+ * - When seed is provided, returns deterministic UUID v5 scoped under 'legacy' namespace
48
+ * - When seed omitted, returns a random UUID to preserve previous behavior
49
+ */
50
+ export declare function makeUUIDLegacy(seed?: string): string;
@@ -0,0 +1,66 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { v5 as uuidv5 } from 'uuid';
3
+ /**
4
+ * Fixed namespace for all demo data (regenerate on schema-breaking changes if needed).
5
+ * Using standard DNS namespace UUID as recommended by RFC 4122.
6
+ */
7
+ const DEMO_NAMESPACE = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
8
+ /**
9
+ * Generate deterministic UUID v5 from semantic name.
10
+ *
11
+ * This function creates stable, reproducible UUIDs for demo/staging data entities.
12
+ * The same namespace + name combination will always produce the same UUID across
13
+ * deployments, making it safe to reference these IDs in documentation, screenshots,
14
+ * and external links.
15
+ *
16
+ * @param namespace - Entity type: 'business', 'charge', 'transaction', 'document', etc.
17
+ * @param name - Semantic identifier (kebab-case recommended)
18
+ * @returns UUID v5 string (e.g., '550e8400-e29b-41d4-a716-446655440000')
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * // Business entity
23
+ * makeUUID('business', 'acme-consulting-llc')
24
+ * // => Always produces same UUID
25
+ *
26
+ * // Charge entity
27
+ * makeUUID('charge', 'consulting-invoice-2024-11')
28
+ * // => Stable across deploys
29
+ *
30
+ * // Financial account
31
+ * makeUUID('financial-account', 'bank-usd-account')
32
+ * // => Different from makeUUID('business', 'bank-usd-account')
33
+ * ```
34
+ *
35
+ * @remarks
36
+ * **Naming Conventions:**
37
+ * - Use kebab-case for all semantic names
38
+ * - Combine entity type + descriptive name ensures no collisions
39
+ * - Never change a semantic name once deployed (breaks external links)
40
+ * - For updates to same entity, append version: `acme-consulting-llc-v2`
41
+ *
42
+ * **Stability Warning:**
43
+ * Once a UUID is generated and used in staging/production, the semantic name
44
+ * MUST NOT be changed. Doing so will generate a different UUID and break:
45
+ * - External documentation with embedded links
46
+ * - Screenshots with visible UUIDs
47
+ * - Any hardcoded references in client applications
48
+ *
49
+ * If you need to modify an entity, create a new semantic name with a version suffix.
50
+ */
51
+ export function makeUUID(namespace, name) {
52
+ const composite = `${namespace}:${name}`;
53
+ return uuidv5(composite, DEMO_NAMESPACE);
54
+ }
55
+ /**
56
+ * Backward compatible adapter for legacy single-argument API.
57
+ * - When seed is provided, returns deterministic UUID v5 scoped under 'legacy' namespace
58
+ * - When seed omitted, returns a random UUID to preserve previous behavior
59
+ */
60
+ export function makeUUIDLegacy(seed) {
61
+ if (seed === undefined || seed === null) {
62
+ return randomUUID();
63
+ }
64
+ return makeUUID('legacy', seed);
65
+ }
66
+ //# sourceMappingURL=deterministic-uuid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deterministic-uuid.js","sourceRoot":"","sources":["../../../../../src/demo-fixtures/helpers/deterministic-uuid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC;;;GAGG;AACH,MAAM,cAAc,GAAG,sCAAsC,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,UAAU,QAAQ,CAAC,SAAiB,EAAE,IAAY;IACtD,MAAM,SAAS,GAAG,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC;IACzC,OAAO,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACxC,OAAO,UAAU,EAAE,CAAC;IACtB,CAAC;IACD,OAAO,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { Injector } from 'graphql-modules';
2
- import type { IGetAllTaxCategoriesResult, IGetBusinessesByIdsResult } from '../../../modules/financial-entities/types.js';
2
+ import type { IGetAllTaxCategoriesResult, IGetBusinessesByIdsResult } from '../../financial-entities/types.js';
3
3
  export declare function fetchTaxCategory(injector: Injector, fieldName: string, id?: string | null): Promise<IGetAllTaxCategoriesResult>;
4
4
  export declare function fetchBusiness(injector: Injector, fieldName: string, id?: string | null): Promise<IGetBusinessesByIdsResult>;
@@ -1,6 +1,6 @@
1
1
  import { GraphQLError } from 'graphql';
2
- import { BusinessesProvider } from '../../../modules/financial-entities/providers/businesses.provider.js';
3
- import { TaxCategoriesProvider } from '../../../modules/financial-entities/providers/tax-categories.provider.js';
2
+ import { BusinessesProvider } from '../../financial-entities/providers/businesses.provider.js';
3
+ import { TaxCategoriesProvider } from '../../financial-entities/providers/tax-categories.provider.js';
4
4
  export function fetchTaxCategory(injector, fieldName, id) {
5
5
  const name = fieldName.replace('TaxCategory', '');
6
6
  if (!id) {
@@ -1 +1 @@
1
- {"version":3,"file":"admin-context.helper.js","sourceRoot":"","sources":["../../../../../../src/modules/admin-context/heplers/admin-context.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sEAAsE,CAAC;AAC1G,OAAO,EAAE,qBAAqB,EAAE,MAAM,0EAA0E,CAAC;AAMjH,MAAM,UAAU,gBAAgB,CAC9B,QAAkB,EAClB,SAAiB,EACjB,EAAkB;IAElB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,YAAY,CAAC,GAAG,IAAI,6BAA6B,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,QAAQ;SACZ,GAAG,CAAC,qBAAqB,CAAC;SAC1B,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;SAC9B,IAAI,CAAC,GAAG,CAAC,EAAE;QACV,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,YAAY,CAAC,gBAAgB,IAAI,cAAc,EAAE,cAAc,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,CAAC,EAAE;QACT,IAAI,CAAC,YAAY,YAAY,EAAE,CAAC;YAC9B,MAAM,CAAC,CAAC;QACV,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,YAAY,CAAC,6BAA6B,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACP,CAAC;AACD,MAAM,UAAU,aAAa,CAC3B,QAAkB,EAClB,SAAiB,EACjB,EAAkB;IAElB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,YAAY,CAAC,GAAG,IAAI,yBAAyB,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,QAAQ;SACZ,GAAG,CAAC,kBAAkB,CAAC;SACvB,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;SAC9B,IAAI,CAAC,GAAG,CAAC,EAAE;QACV,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,YAAY,CAAC,YAAY,IAAI,cAAc,EAAE,cAAc,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,CAAC,EAAE;QACT,IAAI,CAAC,YAAY,YAAY,EAAE,CAAC;YAC9B,MAAM,CAAC,CAAC;QACV,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,YAAY,CAAC,yBAAyB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"admin-context.helper.js","sourceRoot":"","sources":["../../../../../../src/modules/admin-context/helpers/admin-context.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2DAA2D,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+DAA+D,CAAC;AAMtG,MAAM,UAAU,gBAAgB,CAC9B,QAAkB,EAClB,SAAiB,EACjB,EAAkB;IAElB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,YAAY,CAAC,GAAG,IAAI,6BAA6B,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,QAAQ;SACZ,GAAG,CAAC,qBAAqB,CAAC;SAC1B,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;SAC9B,IAAI,CAAC,GAAG,CAAC,EAAE;QACV,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,YAAY,CAAC,gBAAgB,IAAI,cAAc,EAAE,cAAc,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,CAAC,EAAE;QACT,IAAI,CAAC,YAAY,YAAY,EAAE,CAAC;YAC9B,MAAM,CAAC,CAAC;QACV,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,YAAY,CAAC,6BAA6B,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACP,CAAC;AACD,MAAM,UAAU,aAAa,CAC3B,QAAkB,EAClB,SAAiB,EACjB,EAAkB;IAElB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,YAAY,CAAC,GAAG,IAAI,yBAAyB,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,QAAQ;SACZ,GAAG,CAAC,kBAAkB,CAAC;SACvB,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;SAC9B,IAAI,CAAC,GAAG,CAAC,EAAE;QACV,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,YAAY,CAAC,YAAY,IAAI,cAAc,EAAE,cAAc,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,CAAC,EAAE;QACT,IAAI,CAAC,YAAY,YAAY,EAAE,CAAC;YAC9B,MAAM,CAAC,CAAC;QACV,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,YAAY,CAAC,yBAAyB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { GraphQLError } from 'graphql';
2
2
  import { TagsProvider } from '../../../modules/tags/providers/tags.provider.js';
3
3
  import { dateToTimelessDateString } from '../../../shared/helpers/index.js';
4
- import { fetchBusiness, fetchTaxCategory } from '../heplers/admin-context.helper.js';
4
+ import { fetchBusiness, fetchTaxCategory } from '../helpers/admin-context.helper.js';
5
5
  import { AdminContextProvider } from '../providers/admin-context.provider.js';
6
6
  export const adminContextResolvers = {
7
7
  Query: {
@@ -1,5 +1,5 @@
1
1
  import DataLoader from 'dataloader';
2
- import { DBProvider } from '../../../modules/app-providers/db.provider.js';
2
+ import { DBProvider } from '../../app-providers/db.provider.js';
3
3
  import type { BusinessTripProto, IGetBusinessTripsByDatesParams, IInsertBusinessTripParams, IUpdateAccountantApprovalParams, IUpdateBusinessTripParams } from '../types.js';
4
4
  export declare class BusinessTripsProvider {
5
5
  private dbProvider;
@@ -2,8 +2,8 @@ import { __decorate, __metadata } from "tslib";
2
2
  import DataLoader from 'dataloader';
3
3
  import { Injectable, Scope } from 'graphql-modules';
4
4
  import { sql } from '@pgtyped/runtime';
5
- import { DBProvider } from '../../../modules/app-providers/db.provider.js';
6
5
  import { getCacheInstance } from '../../../shared/helpers/index.js';
6
+ import { DBProvider } from '../../app-providers/db.provider.js';
7
7
  const getAllBusinessTrips = sql `
8
8
  SELECT *
9
9
  FROM accounter_schema.business_trips`;
@@ -1 +1 @@
1
- {"version":3,"file":"business-trips.provider.js","sourceRoot":"","sources":["../../../../../../src/modules/business-trips/providers/business-trips.provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"business-trips.provider.js","sourceRoot":"","sources":["../../../../../../src/modules/business-trips/providers/business-trips.provider.ts"],"names":[],"mappings":"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"}