@jrmc/adonis-attachment 6.0.0-alpha.0 → 6.0.0-alpha.2

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 (199) hide show
  1. package/build/commands/make/attachment_v5_migration.d.ts.map +1 -1
  2. package/build/commands/make/attachment_v5_migration.js +6 -3
  3. package/build/commands/make/attachment_v5_migration.js.map +1 -1
  4. package/build/commands/make/attachments_table.d.ts.map +1 -1
  5. package/build/commands/make/attachments_table.js +8 -2
  6. package/build/commands/make/attachments_table.js.map +1 -1
  7. package/build/index.d.ts +23 -22
  8. package/build/index.d.ts.map +1 -1
  9. package/build/index.js +15 -14
  10. package/build/index.js.map +1 -1
  11. package/build/providers/attachment_provider.d.ts.map +1 -1
  12. package/build/providers/attachment_provider.js +16 -0
  13. package/build/providers/attachment_provider.js.map +1 -1
  14. package/build/src/core/attachment.d.ts +37 -2
  15. package/build/src/core/attachment.d.ts.map +1 -1
  16. package/build/src/core/attachment.js +108 -5
  17. package/build/src/core/attachment.js.map +1 -1
  18. package/build/src/core/attachment_options.d.ts +32 -0
  19. package/build/src/core/attachment_options.d.ts.map +1 -0
  20. package/build/src/core/attachment_options.js +24 -0
  21. package/build/src/core/attachment_options.js.map +1 -0
  22. package/build/src/core/attachment_service.d.ts +7 -1
  23. package/build/src/core/attachment_service.d.ts.map +1 -1
  24. package/build/src/core/attachment_service.js +50 -4
  25. package/build/src/core/attachment_service.js.map +1 -1
  26. package/build/src/core/index.d.ts +2 -1
  27. package/build/src/core/index.d.ts.map +1 -1
  28. package/build/src/core/index.js +2 -1
  29. package/build/src/core/index.js.map +1 -1
  30. package/build/src/define_config.d.ts +17 -0
  31. package/build/src/define_config.d.ts.map +1 -1
  32. package/build/src/define_config.js +9 -0
  33. package/build/src/define_config.js.map +1 -1
  34. package/build/src/integrations/lucid/column/attachment_column.d.ts +18 -0
  35. package/build/src/integrations/lucid/column/attachment_column.d.ts.map +1 -0
  36. package/build/src/integrations/lucid/{attachment_column.js → column/attachment_column.js} +26 -13
  37. package/build/src/integrations/lucid/column/attachment_column.js.map +1 -0
  38. package/build/src/integrations/lucid/index.d.ts +16 -12
  39. package/build/src/integrations/lucid/index.d.ts.map +1 -1
  40. package/build/src/integrations/lucid/index.js +16 -12
  41. package/build/src/integrations/lucid/index.js.map +1 -1
  42. package/build/src/integrations/lucid/migrations/legacy/legacy_attachment_migration_stub.d.ts +20 -0
  43. package/build/src/integrations/lucid/migrations/legacy/legacy_attachment_migration_stub.d.ts.map +1 -0
  44. package/build/src/integrations/lucid/migrations/legacy/legacy_attachment_migration_stub.js +18 -0
  45. package/build/src/integrations/lucid/migrations/legacy/legacy_attachment_migration_stub.js.map +1 -0
  46. package/build/src/integrations/lucid/{migrate_legacy_attachment.d.ts → migrations/legacy/migrate_legacy_attachment.d.ts} +25 -9
  47. package/build/src/integrations/lucid/migrations/legacy/migrate_legacy_attachment.d.ts.map +1 -0
  48. package/build/src/integrations/lucid/migrations/legacy/migrate_legacy_attachment.js +94 -0
  49. package/build/src/integrations/lucid/migrations/legacy/migrate_legacy_attachment.js.map +1 -0
  50. package/build/src/integrations/lucid/{migrate_legacy_attachment_records.d.ts → migrations/legacy/migrate_legacy_attachment_records.d.ts} +3 -3
  51. package/build/src/integrations/lucid/migrations/legacy/migrate_legacy_attachment_records.d.ts.map +1 -0
  52. package/build/src/integrations/lucid/{migrate_legacy_attachment_records.js → migrations/legacy/migrate_legacy_attachment_records.js} +7 -6
  53. package/build/src/integrations/lucid/migrations/legacy/migrate_legacy_attachment_records.js.map +1 -0
  54. package/build/src/integrations/lucid/models/attachment_link_model.d.ts +30 -0
  55. package/build/src/integrations/lucid/models/attachment_link_model.d.ts.map +1 -0
  56. package/build/src/integrations/lucid/models/attachment_link_model.js +58 -0
  57. package/build/src/integrations/lucid/models/attachment_link_model.js.map +1 -0
  58. package/build/src/integrations/lucid/{attachment_model.d.ts → models/attachment_model.d.ts} +2 -6
  59. package/build/src/integrations/lucid/models/attachment_model.d.ts.map +1 -0
  60. package/build/src/integrations/lucid/{attachment_model.js → models/attachment_model.js} +1 -13
  61. package/build/src/integrations/lucid/models/attachment_model.js.map +1 -0
  62. package/build/src/integrations/lucid/persistence/lucid_attachment_lifecycle_service.d.ts +34 -0
  63. package/build/src/integrations/lucid/persistence/lucid_attachment_lifecycle_service.d.ts.map +1 -0
  64. package/build/src/integrations/lucid/persistence/lucid_attachment_lifecycle_service.js +195 -0
  65. package/build/src/integrations/lucid/persistence/lucid_attachment_lifecycle_service.js.map +1 -0
  66. package/build/src/integrations/lucid/{lucid_attachment_repository.d.ts → persistence/lucid_attachment_repository.d.ts} +3 -3
  67. package/build/src/integrations/lucid/persistence/lucid_attachment_repository.d.ts.map +1 -0
  68. package/build/src/integrations/lucid/{lucid_attachment_repository.js → persistence/lucid_attachment_repository.js} +1 -1
  69. package/build/src/integrations/lucid/persistence/lucid_attachment_repository.js.map +1 -0
  70. package/build/src/integrations/lucid/persistence/lucid_attachment_store.d.ts +48 -0
  71. package/build/src/integrations/lucid/persistence/lucid_attachment_store.d.ts.map +1 -0
  72. package/build/src/integrations/lucid/persistence/lucid_attachment_store.js +224 -0
  73. package/build/src/integrations/lucid/persistence/lucid_attachment_store.js.map +1 -0
  74. package/build/src/integrations/lucid/{lucid_variant_generation_service.d.ts → persistence/lucid_variant_generation_service.d.ts} +3 -3
  75. package/build/src/integrations/lucid/persistence/lucid_variant_generation_service.d.ts.map +1 -0
  76. package/build/src/integrations/lucid/persistence/lucid_variant_generation_service.js.map +1 -0
  77. package/build/src/integrations/lucid/{attachment_owner.d.ts → relations/attachment_owner.d.ts} +2 -1
  78. package/build/src/integrations/lucid/relations/attachment_owner.d.ts.map +1 -0
  79. package/build/src/integrations/lucid/relations/attachment_owner.js.map +1 -0
  80. package/build/src/integrations/lucid/relations/attachment_relation.d.ts +71 -0
  81. package/build/src/integrations/lucid/relations/attachment_relation.d.ts.map +1 -0
  82. package/build/src/integrations/lucid/relations/attachment_relation.js +266 -0
  83. package/build/src/integrations/lucid/relations/attachment_relation.js.map +1 -0
  84. package/build/src/integrations/lucid/schema/attachment_schema_service.d.ts +24 -0
  85. package/build/src/integrations/lucid/schema/attachment_schema_service.d.ts.map +1 -0
  86. package/build/src/integrations/lucid/schema/attachment_schema_service.js +68 -0
  87. package/build/src/integrations/lucid/schema/attachment_schema_service.js.map +1 -0
  88. package/build/src/integrations/lucid/schema/attachment_table_names.d.ts +15 -0
  89. package/build/src/integrations/lucid/schema/attachment_table_names.d.ts.map +1 -0
  90. package/build/src/integrations/lucid/schema/attachment_table_names.js +20 -0
  91. package/build/src/integrations/lucid/schema/attachment_table_names.js.map +1 -0
  92. package/build/src/integrations/lucid/schema/attachments_table_stub.d.ts.map +1 -0
  93. package/build/src/integrations/lucid/{attachments_table_stub.js → schema/attachments_table_stub.js} +2 -4
  94. package/build/src/integrations/lucid/schema/attachments_table_stub.js.map +1 -0
  95. package/build/src/integrations/lucid/schema/configure_lucid_attachment_tables.d.ts +12 -0
  96. package/build/src/integrations/lucid/schema/configure_lucid_attachment_tables.d.ts.map +1 -0
  97. package/build/src/integrations/lucid/schema/configure_lucid_attachment_tables.js +19 -0
  98. package/build/src/integrations/lucid/schema/configure_lucid_attachment_tables.js.map +1 -0
  99. package/build/src/sources/attachment_manager.d.ts +14 -12
  100. package/build/src/sources/attachment_manager.d.ts.map +1 -1
  101. package/build/src/sources/attachment_manager.js +14 -6
  102. package/build/src/sources/attachment_manager.js.map +1 -1
  103. package/build/stubs/migrations/attachments_table.stub +7 -24
  104. package/build/{src/integrations/lucid/render_legacy_attachment_migration_script.js → stubs/migrations/legacy_attachment_migration.stub} +13 -15
  105. package/build/tests/attachment_manager.spec.js +21 -18
  106. package/build/tests/attachment_manager.spec.js.map +1 -1
  107. package/build/tests/attachment_manager_service.spec.js +2 -2
  108. package/build/tests/attachment_manager_service.spec.js.map +1 -1
  109. package/build/tests/attachment_options.spec.d.ts +2 -0
  110. package/build/tests/attachment_options.spec.d.ts.map +1 -0
  111. package/build/tests/attachment_options.spec.js +31 -0
  112. package/build/tests/attachment_options.spec.js.map +1 -0
  113. package/build/tests/attachment_provider.spec.js +30 -1
  114. package/build/tests/attachment_provider.spec.js.map +1 -1
  115. package/build/tests/{create_legacy_attachment_migration_script.spec.d.ts → attachment_schema_service.spec.d.ts} +1 -1
  116. package/build/tests/attachment_schema_service.spec.d.ts.map +1 -0
  117. package/build/tests/attachment_schema_service.spec.js +38 -0
  118. package/build/tests/attachment_schema_service.spec.js.map +1 -0
  119. package/build/tests/attachment_service.spec.js +55 -0
  120. package/build/tests/attachment_service.spec.js.map +1 -1
  121. package/build/tests/attachment_table_names.spec.d.ts +8 -0
  122. package/build/tests/attachment_table_names.spec.d.ts.map +1 -0
  123. package/build/tests/attachment_table_names.spec.js +36 -0
  124. package/build/tests/attachment_table_names.spec.js.map +1 -0
  125. package/build/tests/attachments_table_stub.spec.js +41 -5
  126. package/build/tests/attachments_table_stub.spec.js.map +1 -1
  127. package/build/tests/define_config.spec.js +34 -0
  128. package/build/tests/define_config.spec.js.map +1 -1
  129. package/build/tests/helpers/lucid_test_database.d.ts.map +1 -1
  130. package/build/tests/helpers/lucid_test_database.js +16 -6
  131. package/build/tests/helpers/lucid_test_database.js.map +1 -1
  132. package/build/tests/legacy_attachment_migration_stub.spec.d.ts +8 -0
  133. package/build/tests/legacy_attachment_migration_stub.spec.d.ts.map +1 -0
  134. package/build/tests/legacy_attachment_migration_stub.spec.js +57 -0
  135. package/build/tests/legacy_attachment_migration_stub.spec.js.map +1 -0
  136. package/build/tests/lucid_attachment_collection_store.spec.d.ts +2 -0
  137. package/build/tests/lucid_attachment_collection_store.spec.d.ts.map +1 -0
  138. package/build/tests/lucid_attachment_collection_store.spec.js +53 -0
  139. package/build/tests/lucid_attachment_collection_store.spec.js.map +1 -0
  140. package/build/tests/lucid_attachment_column.spec.js +57 -1
  141. package/build/tests/lucid_attachment_column.spec.js.map +1 -1
  142. package/build/tests/lucid_attachment_lifecycle_service.spec.js +117 -111
  143. package/build/tests/lucid_attachment_lifecycle_service.spec.js.map +1 -1
  144. package/build/tests/lucid_attachment_relation.spec.d.ts +8 -0
  145. package/build/tests/lucid_attachment_relation.spec.d.ts.map +1 -0
  146. package/build/tests/lucid_attachment_relation.spec.js +295 -0
  147. package/build/tests/lucid_attachment_relation.spec.js.map +1 -0
  148. package/build/tests/lucid_attachment_repository.spec.js +1 -1
  149. package/build/tests/lucid_attachment_repository.spec.js.map +1 -1
  150. package/build/tests/lucid_attachment_store.spec.js +24 -50
  151. package/build/tests/lucid_attachment_store.spec.js.map +1 -1
  152. package/build/tests/lucid_sqlite_integration.spec.js +23 -18
  153. package/build/tests/lucid_sqlite_integration.spec.js.map +1 -1
  154. package/build/tests/lucid_variant_generation_service.spec.js +1 -1
  155. package/build/tests/lucid_variant_generation_service.spec.js.map +1 -1
  156. package/build/tests/migrate_legacy_attachment.spec.js +114 -67
  157. package/build/tests/migrate_legacy_attachment.spec.js.map +1 -1
  158. package/build/tests/migrate_legacy_attachment_records.spec.js +4 -3
  159. package/build/tests/migrate_legacy_attachment_records.spec.js.map +1 -1
  160. package/package.json +4 -2
  161. package/build/src/integrations/lucid/attachment_column.d.ts +0 -11
  162. package/build/src/integrations/lucid/attachment_column.d.ts.map +0 -1
  163. package/build/src/integrations/lucid/attachment_column.js.map +0 -1
  164. package/build/src/integrations/lucid/attachment_model.d.ts.map +0 -1
  165. package/build/src/integrations/lucid/attachment_model.js.map +0 -1
  166. package/build/src/integrations/lucid/attachment_owner.d.ts.map +0 -1
  167. package/build/src/integrations/lucid/attachment_owner.js.map +0 -1
  168. package/build/src/integrations/lucid/attachments_table_stub.d.ts.map +0 -1
  169. package/build/src/integrations/lucid/attachments_table_stub.js.map +0 -1
  170. package/build/src/integrations/lucid/create_legacy_attachment_migration_script.d.ts +0 -13
  171. package/build/src/integrations/lucid/create_legacy_attachment_migration_script.d.ts.map +0 -1
  172. package/build/src/integrations/lucid/create_legacy_attachment_migration_script.js +0 -20
  173. package/build/src/integrations/lucid/create_legacy_attachment_migration_script.js.map +0 -1
  174. package/build/src/integrations/lucid/lucid_attachment_lifecycle_service.d.ts +0 -21
  175. package/build/src/integrations/lucid/lucid_attachment_lifecycle_service.d.ts.map +0 -1
  176. package/build/src/integrations/lucid/lucid_attachment_lifecycle_service.js +0 -68
  177. package/build/src/integrations/lucid/lucid_attachment_lifecycle_service.js.map +0 -1
  178. package/build/src/integrations/lucid/lucid_attachment_repository.d.ts.map +0 -1
  179. package/build/src/integrations/lucid/lucid_attachment_repository.js.map +0 -1
  180. package/build/src/integrations/lucid/lucid_attachment_store.d.ts +0 -27
  181. package/build/src/integrations/lucid/lucid_attachment_store.d.ts.map +0 -1
  182. package/build/src/integrations/lucid/lucid_attachment_store.js +0 -84
  183. package/build/src/integrations/lucid/lucid_attachment_store.js.map +0 -1
  184. package/build/src/integrations/lucid/lucid_variant_generation_service.d.ts.map +0 -1
  185. package/build/src/integrations/lucid/lucid_variant_generation_service.js.map +0 -1
  186. package/build/src/integrations/lucid/migrate_legacy_attachment.d.ts.map +0 -1
  187. package/build/src/integrations/lucid/migrate_legacy_attachment.js +0 -67
  188. package/build/src/integrations/lucid/migrate_legacy_attachment.js.map +0 -1
  189. package/build/src/integrations/lucid/migrate_legacy_attachment_records.d.ts.map +0 -1
  190. package/build/src/integrations/lucid/migrate_legacy_attachment_records.js.map +0 -1
  191. package/build/src/integrations/lucid/render_legacy_attachment_migration_script.d.ts +0 -11
  192. package/build/src/integrations/lucid/render_legacy_attachment_migration_script.d.ts.map +0 -1
  193. package/build/src/integrations/lucid/render_legacy_attachment_migration_script.js.map +0 -1
  194. package/build/tests/create_legacy_attachment_migration_script.spec.d.ts.map +0 -1
  195. package/build/tests/create_legacy_attachment_migration_script.spec.js +0 -31
  196. package/build/tests/create_legacy_attachment_migration_script.spec.js.map +0 -1
  197. /package/build/src/integrations/lucid/{lucid_variant_generation_service.js → persistence/lucid_variant_generation_service.js} +0 -0
  198. /package/build/src/integrations/lucid/{attachment_owner.js → relations/attachment_owner.js} +0 -0
  199. /package/build/src/integrations/lucid/{attachments_table_stub.d.ts → schema/attachments_table_stub.d.ts} +0 -0
@@ -2,8 +2,9 @@ import { readFile } from 'node:fs/promises';
2
2
  import { join } from 'node:path';
3
3
  import { test } from '@japa/runner';
4
4
  import MakeAttachmentsTable from '../commands/make/attachments_table.js';
5
+ import { defineConfig } from '../src/define_config.js';
5
6
  import { stubsRoot } from '../stubs/main.js';
6
- import { createAttachmentsTableStubState } from '../src/integrations/lucid/attachments_table_stub.js';
7
+ import { createAttachmentsTableStubState } from '../src/integrations/lucid/schema/attachments_table_stub.js';
7
8
  test.group('attachments table migration stub', () => {
8
9
  test('prepares a timestamped destination and template state', ({ assert }) => {
9
10
  const state = createAttachmentsTableStubState({
@@ -20,14 +21,15 @@ test.group('attachments table migration stub', () => {
20
21
  test('rejects unsafe table names', ({ assert }) => {
21
22
  assert.throws(() => createAttachmentsTableStubState({ directory: '/app', tableName: 'attachments; drop table users' }), 'Lucid attachment table names must be snake_case identifiers');
22
23
  });
23
- test('contains the polymorphic attachment schema', async ({ assert }) => {
24
+ test('delegates blob and polymorphic-link schemas to the package service', async ({ assert }) => {
24
25
  const stub = await readFile(join(stubsRoot, 'migrations/attachments_table.stub'), 'utf8');
25
26
  assert.include(stub, 'exports({ to: destination })');
26
27
  assert.include(stub, 'Create{{ className }}Table');
27
28
  assert.include(stub, "protected tableName = '{{ tableName }}'");
28
- assert.include(stub, "table.string('attachable_type').notNullable()");
29
- assert.include(stub, "table.uuid('parent_id').nullable()");
30
- assert.include(stub, "table.unique(['parent_id', 'variant_key'])");
29
+ assert.include(stub, "import { AttachmentSchemaService } from '@jrmc/adonis-attachment/lucid'");
30
+ assert.include(stub, 'new AttachmentSchemaService(this.db.getWriteClient()');
31
+ assert.include(stub, 'createTables()');
32
+ assert.include(stub, 'dropTables()');
31
33
  });
32
34
  test('uses the package stub from the Ace command', async ({ assert }) => {
33
35
  const generated = [];
@@ -61,5 +63,39 @@ test.group('attachments table migration stub', () => {
61
63
  assert.match(String(stub.state.destination), /^\/app\/database\/migrations\/\d+_create_media_attachments_table\.ts$/);
62
64
  assert.match(message, /^Created \/app\/database\/migrations\//);
63
65
  });
66
+ test('uses the configured Lucid table when the command has no --table flag', async ({ assert, }) => {
67
+ const generated = [];
68
+ await MakeAttachmentsTable.prototype.run.call({
69
+ parsed: { flags: {} },
70
+ app: {
71
+ makePath: (path) => `/app/${path}`,
72
+ config: {
73
+ get() {
74
+ return defineConfig({
75
+ storage: {
76
+ async write() { },
77
+ async read() {
78
+ return new Uint8Array();
79
+ },
80
+ async remove() { },
81
+ },
82
+ integrations: {
83
+ lucid: { tableName: 'media_attachments' },
84
+ },
85
+ });
86
+ },
87
+ },
88
+ },
89
+ async createCodemods() {
90
+ return {
91
+ async makeUsingStub(_root, _path, state) {
92
+ generated.push({ state });
93
+ },
94
+ };
95
+ },
96
+ logger: { success() { } },
97
+ });
98
+ assert.equal(generated[0]?.state.tableName, 'media_attachments');
99
+ });
64
100
  });
65
101
  //# sourceMappingURL=attachments_table_stub.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachments_table_stub.spec.js","sourceRoot":"","sources":["../../tests/attachments_table_stub.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attachments_table_stub.spec.js","sourceRoot":"","sources":["../../tests/attachments_table_stub.spec.ts"],"names":[],"mappings":"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"}
@@ -149,6 +149,40 @@ test.group('defineConfig', () => {
149
149
  const resolved = await defineConfig({ defaultDisk: 'public', storage, sources }).resolver({});
150
150
  assert.equal(resolved.sources, sources);
151
151
  });
152
+ test('preserves attachment persistence defaults', async ({ assert }) => {
153
+ const storage = {
154
+ async write() { },
155
+ async read() {
156
+ return new Uint8Array();
157
+ },
158
+ async remove() { },
159
+ };
160
+ const defaults = { folder: 'attachments', variants: ['thumbnail'] };
161
+ const resolved = await defineConfig({ defaultDisk: 'public', storage, defaults }).resolver({});
162
+ assert.equal(resolved.defaults, defaults);
163
+ });
164
+ test('derives Lucid link table names from one configured blob table', async ({ assert }) => {
165
+ const storage = {
166
+ async write() { },
167
+ async read() {
168
+ return new Uint8Array();
169
+ },
170
+ async remove() { },
171
+ };
172
+ const resolved = await defineConfig({
173
+ defaultDisk: 'public',
174
+ storage,
175
+ integrations: {
176
+ lucid: { tableName: 'media_attachments' },
177
+ },
178
+ }).resolver({});
179
+ assert.deepEqual(resolved.integrations, {
180
+ lucid: {
181
+ tableName: 'media_attachments',
182
+ linksTableName: 'media_attachment_links',
183
+ },
184
+ });
185
+ });
152
186
  test('rejects invalid route prefixes', async ({ assert }) => {
153
187
  const storage = {
154
188
  async write() { },
@@ -1 +1 @@
1
- {"version":3,"file":"define_config.spec.js","sourceRoot":"","sources":["../../tests/define_config.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define_config.spec.js","sourceRoot":"","sources":["../../tests/define_config.spec.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAEnC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,qBAAqB,GAItB,MAAM,aAAa,CAAA;AAEpB,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE;IAC9B,IAAI,CAAC,kDAAkD,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5E,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,MAAM,KAAK,GAAG;YACZ,GAAG,CAAC,IAAa;gBACf,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,CAAA;gBAC7B,OAAO;oBACL,KAAK,CAAC,GAAG,KAAI,CAAC;oBACd,KAAK,CAAC,QAAQ;wBACZ,OAAO,IAAI,UAAU,EAAE,CAAA;oBACzB,CAAC;oBACD,KAAK,CAAC,MAAM,KAAI,CAAC;iBAClB,CAAA;YACH,CAAC;SACF,CAAA;QACD,MAAM,MAAM,GAAG,YAAY,CAAC;YAC1B,OAAO,EAAE,kBAAkB,CAAC,OAAO;SACpC,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YACrC,MAAM,EAAE;gBACN,GAAG,CAAC,OAAe;oBACjB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;oBAC9B,OAAO,cAAc,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;gBAC3E,CAAC;aACF;YACD,SAAS,EAAE;gBACT,KAAK,CAAC,IAAI,CAAC,OAAe;oBACxB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;oBACtC,OAAO,KAAK,CAAA;gBACd,CAAC;aACF;SACO,CAAC,CAAA;QAEX,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;QAExC,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;YAC3B,IAAI,EAAE,QAAQ,CAAC,WAAW;YAC1B,IAAI,EAAE,wBAAwB;YAC9B,IAAI,EAAE,IAAI,UAAU,EAAE;YACtB,QAAQ,EAAE,WAAW;SACtB,CAAC,CAAA;QAEF,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qDAAqD,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC/E,MAAM,OAAO,GAAsB;YACjC,KAAK,CAAC,KAAK,KAAI,CAAC;YAChB,KAAK,CAAC,IAAI;gBACR,OAAO,IAAI,UAAU,EAAE,CAAA;YACzB,CAAC;YACD,KAAK,CAAC,MAAM,KAAI,CAAC;SAClB,CAAA;QAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAW,CAAC,CAAA;QAEtE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,gDAAgD,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1E,MAAM,OAAO,GAAsB;YACjC,KAAK,CAAC,KAAK,KAAI,CAAC;YAChB,KAAK,CAAC,IAAI;gBACR,OAAO,IAAI,UAAU,EAAE,CAAA;YACzB,CAAC;YACD,KAAK,CAAC,MAAM,KAAI,CAAC;SAClB,CAAA;QACD,MAAM,KAAK,GAAoB;YAC7B,KAAK,CAAC,OAAO,CAAC,IAAmB,IAAG,CAAC;SACtC,CAAA;QACD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QAEtE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAW,CAAC,CAAA;QAEnD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QAC5C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACnC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,yDAAyD,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACnF,MAAM,OAAO,GAAsB;YACjC,KAAK,CAAC,KAAK,KAAI,CAAC;YAChB,KAAK,CAAC,IAAI;gBACR,OAAO,IAAI,UAAU,EAAE,CAAA;YACzB,CAAC;YACD,KAAK,CAAC,MAAM,KAAI,CAAC;SAClB,CAAA;QACD,MAAM,KAAK,GAAoB;YAC7B,KAAK,CAAC,OAAO,CAAC,IAAmB,IAAG,CAAC;SACtC,CAAA;QACD,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA;QACrC,MAAM,MAAM,GAAG,YAAY,CAAC;YAC1B,WAAW,EAAE,QAAQ;YACrB,OAAO,CAAC,WAAW;gBACjB,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;gBAC9B,OAAO,OAAO,CAAA;YAChB,CAAC;YACD,KAAK,CAAC,KAAK,CAAC,WAAW;gBACrB,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;gBAC9B,OAAO,KAAK,CAAA;YACd,CAAC;SACF,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAY,CAAC,CAAA;QAEpD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qCAAqC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC/D,MAAM,OAAO,GAAsB;YACjC,KAAK,CAAC,KAAK,KAAI,CAAC;YAChB,KAAK,CAAC,IAAI;gBACR,OAAO,IAAI,UAAU,EAAE,CAAA;YACzB,CAAC;YACD,KAAK,CAAC,MAAM,KAAI,CAAC;SAClB,CAAA;QACD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAA;QAEpF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAW,CAAC,CAAA;QAEnD,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,yDAAyD,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACnF,MAAM,OAAO,GAAsB;YACjC,KAAK,CAAC,KAAK,KAAI,CAAC;YAChB,KAAK,CAAC,IAAI;gBACR,OAAO,IAAI,UAAU,EAAE,CAAA;YACzB,CAAC;YACD,KAAK,CAAC,MAAM,KAAI,CAAC;SAClB,CAAA;QAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;YAClC,WAAW,EAAE,QAAQ;YACrB,OAAO;YACP,KAAK,EAAE,KAAK;SACb,CAAC,CAAC,QAAQ,CAAC,EAAW,CAAC,CAAA;QACxB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;YAClC,WAAW,EAAE,QAAQ;YACrB,OAAO;YACP,KAAK,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE;SACnC,CAAC,CAAC,QAAQ,CAAC,EAAW,CAAC,CAAA;QAExB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC9B,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kCAAkC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5D,MAAM,OAAO,GAAsB;YACjC,KAAK,CAAC,KAAK,KAAI,CAAC;YAChB,KAAK,CAAC,IAAI;gBACR,OAAO,IAAI,UAAU,EAAE,CAAA;YACzB,CAAC;YACD,KAAK,CAAC,MAAM,KAAI,CAAC;SAClB,CAAA;QACD,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAA;QAE9C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAW,CAAC,CAAA;QAEtG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,2CAA2C,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACrE,MAAM,OAAO,GAAsB;YACjC,KAAK,CAAC,KAAK,KAAI,CAAC;YAChB,KAAK,CAAC,IAAI;gBACR,OAAO,IAAI,UAAU,EAAE,CAAA;YACzB,CAAC;YACD,KAAK,CAAC,MAAM,KAAI,CAAC;SAClB,CAAA;QACD,MAAM,QAAQ,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,CAAA;QAEnE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAW,CAAC,CAAA;QAEvG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,+DAA+D,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACzF,MAAM,OAAO,GAAsB;YACjC,KAAK,CAAC,KAAK,KAAI,CAAC;YAChB,KAAK,CAAC,IAAI;gBACR,OAAO,IAAI,UAAU,EAAE,CAAA;YACzB,CAAC;YACD,KAAK,CAAC,MAAM,KAAI,CAAC;SAClB,CAAA;QAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;YAClC,WAAW,EAAE,QAAQ;YACrB,OAAO;YACP,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE;aAC1C;SACF,CAAC,CAAC,QAAQ,CAAC,EAAW,CAAC,CAAA;QAExB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE;YACtC,KAAK,EAAE;gBACL,SAAS,EAAE,mBAAmB;gBAC9B,cAAc,EAAE,wBAAwB;aACzC;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,gCAAgC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1D,MAAM,OAAO,GAAsB;YACjC,KAAK,CAAC,KAAK,KAAI,CAAC;YAChB,KAAK,CAAC,IAAI;gBACR,OAAO,IAAI,UAAU,EAAE,CAAA;YACzB,CAAC;YACD,KAAK,CAAC,MAAM,KAAI,CAAC;SAClB,CAAA;QAED,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAW,CAAC,EAClH,2EAA2E,CAC5E,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,2DAA2D,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACrF,MAAM,OAAO,GAAsB;YACjC,KAAK,CAAC,KAAK,KAAI,CAAC;YAChB,KAAK,CAAC,IAAI;gBACR,OAAO,IAAI,UAAU,EAAE,CAAA;YACzB,CAAC;YACD,KAAK,CAAC,MAAM,KAAI,CAAC;SAClB,CAAA;QACD,MAAM,SAAS,GAAoB,EAAE,CAAA;QACrC,MAAM,SAAS,GAAG,IAAI,sBAAsB,CAAC;YAC3C,WAAW,EAAE;gBACX,KAAK,CAAC,QAAQ;oBACZ,OAAO,IAAI,CAAA;gBACb,CAAC;aACF;YACD,QAAQ,EAAE;gBACR,KAAK,CAAC,QAAQ,KAAI,CAAC;aACpB;SACF,CAAC,CAAA;QACF,SAAS,CAAC,OAAO,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE;YAChC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACrB,CAAC,CAAA;QACD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;QAC1E,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAW,CAAC,CAAA;QAEnD,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC,CAAA;QAC1F,MAAO,QAAQ,CAAC,KAA+B,CAAC,KAAK,EAAE,CAAA;QAEvD,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC,CAAC,CAAA;IAC7F,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"lucid_test_database.d.ts","sourceRoot":"","sources":["../../../tests/helpers/lucid_test_database.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAInD,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAgDjE"}
1
+ {"version":3,"file":"lucid_test_database.d.ts","sourceRoot":"","sources":["../../../tests/helpers/lucid_test_database.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAKnD,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,QAAQ,CAAC,CA0DjE"}
@@ -5,7 +5,8 @@
5
5
  * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
6
  */
7
7
  import { Database } from '@adonisjs/lucid/database';
8
- import { AttachmentModel } from '../../src/integrations/lucid/attachment_model.js';
8
+ import { AttachmentModel } from '../../src/integrations/lucid/models/attachment_model.js';
9
+ import { AttachmentLinkModel } from '../../src/integrations/lucid/models/attachment_link_model.js';
9
10
  export async function createLucidTestDatabase() {
10
11
  const database = new Database({
11
12
  connection: 'sqlite',
@@ -24,12 +25,9 @@ export async function createLucidTestDatabase() {
24
25
  },
25
26
  });
26
27
  AttachmentModel.useAdapter(database.modelAdapter());
28
+ AttachmentLinkModel.useAdapter(database.modelAdapter());
27
29
  await database.connection().schema.createTable('attachments', (table) => {
28
30
  table.string('id').primary();
29
- table.string('attachable_type').notNullable();
30
- table.string('attachable_id').notNullable();
31
- table.string('field').notNullable();
32
- table.string('owner_key', 64).nullable().unique();
33
31
  table.string('parent_id').nullable().references('id').inTable('attachments').onDelete('CASCADE');
34
32
  table.string('variant_key').nullable();
35
33
  table.string('disk').notNullable();
@@ -42,10 +40,22 @@ export async function createLucidTestDatabase() {
42
40
  table.json('metadata').nullable();
43
41
  table.timestamp('created_at').notNullable();
44
42
  table.timestamp('updated_at').notNullable();
45
- table.index(['attachable_type', 'attachable_id', 'field']);
46
43
  table.index(['parent_id']);
47
44
  table.unique(['parent_id', 'variant_key']);
48
45
  });
46
+ await database.connection().schema.createTable('attachment_links', (table) => {
47
+ table.string('id').primary();
48
+ table.string('attachable_type').notNullable();
49
+ table.string('attachable_id').notNullable();
50
+ table.string('field').notNullable();
51
+ table.string('owner_key', 64).nullable().unique();
52
+ table.integer('position').unsigned().nullable();
53
+ table.string('attachment_id').notNullable().references('id').inTable('attachments').onDelete('CASCADE');
54
+ table.timestamp('created_at').notNullable();
55
+ table.timestamp('updated_at').notNullable();
56
+ table.index(['attachable_type', 'attachable_id', 'field']);
57
+ table.index(['attachment_id']);
58
+ });
49
59
  return database;
50
60
  }
51
61
  //# sourceMappingURL=lucid_test_database.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lucid_test_database.js","sourceRoot":"","sources":["../../../tests/helpers/lucid_test_database.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAA;AAElF,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAC3B;QACE,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE;YACX,MAAM,EAAE;gBACN,MAAM,EAAE,gBAAgB;gBACxB,UAAU,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;gBACpC,gBAAgB,EAAE,IAAI;aACvB;SACF;KACF,EACD,EAAE,KAAK,KAAI,CAAC,EAAW,EACvB;QACE,KAAK,CAAC,IAAI,KAAI,CAAC;QACf,KAAK,CAAC,UAAU,KAAI,CAAC;QACrB,YAAY;YACV,OAAO,KAAK,CAAA;QACd,CAAC;KACO,CACX,CAAA;IAED,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAA;IAEnD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;QACtE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAA;QAC5B,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,EAAE,CAAA;QAC7C,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAA;QAC3C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;QACnC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAA;QACjD,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAChG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAA;QACtC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAClC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAClC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAClC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAA;QAC3C,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAA;QACvC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAA;QACrC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAA;QACjD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAA;QACjC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAA;QAC3C,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAA;QAC3C,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;QAC1D,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;QAC1B,KAAK,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"lucid_test_database.js","sourceRoot":"","sources":["../../../tests/helpers/lucid_test_database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @jrmc/adonis-attachment
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=legacy_attachment_migration_stub.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy_attachment_migration_stub.spec.d.ts","sourceRoot":"","sources":["../../tests/legacy_attachment_migration_stub.spec.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @jrmc/adonis-attachment
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ import { readFile } from 'node:fs/promises';
8
+ import { join } from 'node:path';
9
+ import { test } from '@japa/runner';
10
+ import MakeAttachmentV5Migration from '../commands/make/attachment_v5_migration.js';
11
+ import { stubsRoot } from '../stubs/main.js';
12
+ import { createLegacyAttachmentMigrationStubState } from '../src/integrations/lucid/index.js';
13
+ test.group('legacy attachment migration stub', () => {
14
+ test('prepares a timestamped destination and template state', ({ assert }) => {
15
+ assert.deepEqual(createLegacyAttachmentMigrationStubState({
16
+ directory: '/app/database/scripts',
17
+ defaultDisk: 's3',
18
+ timestamp: 1700000000000,
19
+ }), {
20
+ destination: '/app/database/scripts/1700000000000_migrate_v5_attachments.ts',
21
+ defaultDisk: 's3',
22
+ });
23
+ });
24
+ test('uses a package stub for the generated data migration', async ({ assert }) => {
25
+ const stub = await readFile(join(stubsRoot, 'migrations/legacy_attachment_migration.stub'), 'utf8');
26
+ assert.include(stub, 'exports({ to: destination })');
27
+ assert.include(stub, "defaultDisk: '{{ defaultDisk }}'");
28
+ assert.include(stub, 'migrateLegacyAttachmentRecords');
29
+ assert.include(stub, 'AttachmentLinkModel.createMany(rows.links');
30
+ });
31
+ test('uses the package stub from the Ace command', async ({ assert }) => {
32
+ const generated = [];
33
+ const messages = [];
34
+ await MakeAttachmentV5Migration.prototype.run.call({
35
+ parsed: { flags: { disk: 's3', folder: 'database/scripts' } },
36
+ app: { makePath: (path) => `/app/${path}` },
37
+ async createCodemods() {
38
+ return {
39
+ async makeUsingStub(root, path, state) {
40
+ generated.push({ root, path, state });
41
+ },
42
+ };
43
+ },
44
+ logger: {
45
+ success(message) {
46
+ messages.push(message);
47
+ },
48
+ },
49
+ });
50
+ assert.equal(generated[0]?.root, stubsRoot);
51
+ assert.equal(generated[0]?.path, 'migrations/legacy_attachment_migration.stub');
52
+ assert.equal(generated[0]?.state.defaultDisk, 's3');
53
+ assert.match(String(generated[0]?.state.destination), /^\/app\/database\/scripts\/\d+_migrate_v5_attachments\.ts$/);
54
+ assert.match(messages[0] ?? '', /^Created \/app\/database\/scripts\//);
55
+ });
56
+ });
57
+ //# sourceMappingURL=legacy_attachment_migration_stub.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy_attachment_migration_stub.spec.js","sourceRoot":"","sources":["../../tests/legacy_attachment_migration_stub.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lucid_attachment_collection_store.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lucid_attachment_collection_store.spec.d.ts","sourceRoot":"","sources":["../../tests/lucid_attachment_collection_store.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,53 @@
1
+ import { test } from '@japa/runner';
2
+ import { LucidAttachmentStore } from '../src/integrations/lucid/persistence/lucid_attachment_store.js';
3
+ import { createLucidTestDatabase } from './helpers/lucid_test_database.js';
4
+ const owner = { type: 'users', id: 'user-1', field: 'avatars' };
5
+ let database;
6
+ function makeAttachment(id) {
7
+ return {
8
+ id,
9
+ disk: 'fs',
10
+ path: `users/user-1/${id}.jpg`,
11
+ name: `${id}.jpg`,
12
+ originalName: `${id}.jpg`,
13
+ mimeType: 'image/jpeg',
14
+ extname: 'jpg',
15
+ size: 42,
16
+ };
17
+ }
18
+ test.group('Lucid attachment collection store', (group) => {
19
+ group.setup(async () => {
20
+ database = await createLucidTestDatabase();
21
+ });
22
+ group.each.setup(async () => {
23
+ await database.from('attachment_links').delete();
24
+ await database.from('attachments').delete();
25
+ });
26
+ group.teardown(async () => {
27
+ await database.manager.closeAll();
28
+ });
29
+ test('inserts, orders, moves, and removes collection items', async ({ assert }) => {
30
+ const store = new LucidAttachmentStore();
31
+ const first = await store.createCollectionItem(owner, makeAttachment('first'));
32
+ const third = await store.createCollectionItem(owner, makeAttachment('third'));
33
+ const second = await store.createCollectionItem(owner, makeAttachment('second'), 1);
34
+ assert.deepEqual((await store.listCollection(owner)).map((item) => [item.attachmentId, item.position]), [
35
+ ['first', 0],
36
+ ['second', 1],
37
+ ['third', 2],
38
+ ]);
39
+ assert.isNull(await store.findOriginal(owner));
40
+ await store.moveCollectionItem(owner, third.id, 0);
41
+ assert.deepEqual((await store.listCollection(owner)).map((item) => [item.attachmentId, item.position]), [
42
+ ['third', 0],
43
+ ['first', 1],
44
+ ['second', 2],
45
+ ]);
46
+ await store.removeCollectionItem(owner, first);
47
+ assert.deepEqual((await store.listCollection(owner)).map((item) => [item.attachmentId, item.position]), [
48
+ ['third', 0],
49
+ ['second', 1],
50
+ ]);
51
+ });
52
+ });
53
+ //# sourceMappingURL=lucid_attachment_collection_store.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lucid_attachment_collection_store.spec.js","sourceRoot":"","sources":["../../tests/lucid_attachment_collection_store.spec.ts"],"names":[],"mappings":"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"}
@@ -29,9 +29,27 @@ __decorate([
29
29
  __decorate([
30
30
  attachment()
31
31
  ], ColumnUser.prototype, "avatar", void 0);
32
+ class ConfiguredColumnUser extends BaseModel {
33
+ static table = 'column_users';
34
+ static selfAssignPrimaryKey = true;
35
+ }
36
+ __decorate([
37
+ column({ isPrimary: true })
38
+ ], ConfiguredColumnUser.prototype, "id", void 0);
39
+ __decorate([
40
+ column()
41
+ ], ConfiguredColumnUser.prototype, "name", void 0);
42
+ __decorate([
43
+ attachment({
44
+ disk: 'decorator',
45
+ folder: ({ model }) => `avatars/${model.id}`,
46
+ rename: false,
47
+ })
48
+ ], ConfiguredColumnUser.prototype, "avatar", void 0);
32
49
  let database;
33
50
  let attachments;
34
51
  let removed;
52
+ let writes;
35
53
  async function createAttachment(name) {
36
54
  return attachments.create({
37
55
  body: Buffer.from(name),
@@ -43,6 +61,7 @@ test.group('Lucid attachment column', (group) => {
43
61
  group.setup(async () => {
44
62
  database = await createLucidTestDatabase();
45
63
  ColumnUser.useAdapter(database.modelAdapter());
64
+ ConfiguredColumnUser.useAdapter(database.modelAdapter());
46
65
  await database.connection().schema.createTable('column_users', (table) => {
47
66
  table.string('id').primary();
48
67
  table.string('name').notNullable().unique();
@@ -51,12 +70,16 @@ test.group('Lucid attachment column', (group) => {
51
70
  });
52
71
  group.each.setup(async () => {
53
72
  removed = [];
73
+ writes = [];
54
74
  await database.from('column_users').delete();
55
75
  attachments = new AttachmentService({
56
76
  defaultDisk: 'fs',
77
+ defaults: { disk: 'config', folder: 'config' },
57
78
  queue: { async enqueue() { } },
58
79
  storage: {
59
- async write() { },
80
+ async write(input) {
81
+ writes.push({ disk: input.disk, path: input.path });
82
+ },
60
83
  async read() {
61
84
  return new Uint8Array();
62
85
  },
@@ -94,6 +117,39 @@ test.group('Lucid attachment column', (group) => {
94
117
  await user.save();
95
118
  assert.deepEqual(removed, [first.path]);
96
119
  });
120
+ test('persists drafts with decorator options and lets manager options override them', async ({ assert }) => {
121
+ const decoratorDraft = attachments.createDraft({
122
+ body: Buffer.from('decorator'),
123
+ originalName: 'avatar.txt',
124
+ mimeType: 'text/plain',
125
+ });
126
+ const decoratorUser = new ConfiguredColumnUser();
127
+ decoratorUser.id = 'user-1';
128
+ decoratorUser.name = 'Jeremy';
129
+ decoratorUser.avatar = decoratorDraft;
130
+ assert.isFalse(decoratorDraft.isPersisted);
131
+ assert.deepEqual(writes, []);
132
+ await decoratorUser.save();
133
+ assert.isTrue(decoratorDraft.isPersisted);
134
+ assert.equal(decoratorDraft.disk, 'decorator');
135
+ assert.equal(decoratorDraft.path, 'avatars/user-1/avatar.txt');
136
+ const managerDraft = attachments.createDraft({
137
+ body: Buffer.from('manager'),
138
+ originalName: 'manager.txt',
139
+ mimeType: 'text/plain',
140
+ }, { disk: 'manager', folder: 'imports', rename: true });
141
+ const managerUser = new ConfiguredColumnUser();
142
+ managerUser.id = 'user-2';
143
+ managerUser.name = 'Paul';
144
+ managerUser.avatar = managerDraft;
145
+ await managerUser.save();
146
+ assert.equal(managerDraft.disk, 'manager');
147
+ assert.equal(managerDraft.path, `imports/${managerDraft.id}.txt`);
148
+ assert.deepEqual(writes, [
149
+ { disk: 'decorator', path: 'avatars/user-1/avatar.txt' },
150
+ { disk: 'manager', path: `imports/${managerDraft.id}.txt` },
151
+ ]);
152
+ });
97
153
  test('removes a newly assigned file when save fails', async ({ assert }) => {
98
154
  const existing = new ColumnUser();
99
155
  existing.id = 'user-1';
@@ -1 +1 @@
1
- {"version":3,"file":"lucid_attachment_column.spec.js","sourceRoot":"","sources":["../../tests/lucid_attachment_column.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lucid_attachment_column.spec.js","sourceRoot":"","sources":["../../tests/lucid_attachment_column.spec.ts"],"names":[],"mappings":"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"}