@volontariapp/domain-post 3.7.9 → 3.8.0-snap-5aae3b8

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 (64) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/entities/index.d.ts +1 -0
  3. package/dist/entities/index.d.ts.map +1 -1
  4. package/dist/entities/index.js +1 -0
  5. package/dist/entities/index.js.map +1 -1
  6. package/dist/entities/post-media.entity.d.ts +9 -0
  7. package/dist/entities/post-media.entity.d.ts.map +1 -0
  8. package/dist/entities/post-media.entity.js +8 -0
  9. package/dist/entities/post-media.entity.js.map +1 -0
  10. package/dist/entities/post.entity.d.ts +4 -0
  11. package/dist/entities/post.entity.d.ts.map +1 -1
  12. package/dist/entities/post.entity.js +3 -0
  13. package/dist/entities/post.entity.js.map +1 -1
  14. package/dist/enums/index.d.ts +2 -0
  15. package/dist/enums/index.d.ts.map +1 -0
  16. package/dist/enums/index.js +2 -0
  17. package/dist/enums/index.js.map +1 -0
  18. package/dist/enums/post-media-status.enum.d.ts +13 -0
  19. package/dist/enums/post-media-status.enum.d.ts.map +1 -0
  20. package/dist/enums/post-media-status.enum.js +15 -0
  21. package/dist/enums/post-media-status.enum.js.map +1 -0
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +1 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/models/index.d.ts +1 -0
  27. package/dist/models/index.d.ts.map +1 -1
  28. package/dist/models/index.js +1 -0
  29. package/dist/models/index.js.map +1 -1
  30. package/dist/models/mapper.d.ts.map +1 -1
  31. package/dist/models/mapper.js +3 -1
  32. package/dist/models/mapper.js.map +1 -1
  33. package/dist/models/post-media.model.d.ts +11 -0
  34. package/dist/models/post-media.model.d.ts.map +1 -0
  35. package/dist/models/post-media.model.js +56 -0
  36. package/dist/models/post-media.model.js.map +1 -0
  37. package/dist/models/post.model.d.ts +4 -0
  38. package/dist/models/post.model.d.ts.map +1 -1
  39. package/dist/models/post.model.js +19 -2
  40. package/dist/models/post.model.js.map +1 -1
  41. package/dist/repositories/interfaces/post.repository.d.ts +12 -6
  42. package/dist/repositories/interfaces/post.repository.d.ts.map +1 -1
  43. package/dist/repositories/postgres-post.repository.d.ts +7 -5
  44. package/dist/repositories/postgres-post.repository.d.ts.map +1 -1
  45. package/dist/repositories/postgres-post.repository.js +175 -15
  46. package/dist/repositories/postgres-post.repository.js.map +1 -1
  47. package/dist/services/post.service.d.ts +9 -6
  48. package/dist/services/post.service.d.ts.map +1 -1
  49. package/dist/services/post.service.js +50 -10
  50. package/dist/services/post.service.js.map +1 -1
  51. package/dist/test/__test-utils__/mocks/post.repository.mock.d.ts.map +1 -1
  52. package/dist/test/__test-utils__/mocks/post.repository.mock.js +1 -0
  53. package/dist/test/__test-utils__/mocks/post.repository.mock.js.map +1 -1
  54. package/dist/test/data-source.js +2 -2
  55. package/dist/test/data-source.js.map +1 -1
  56. package/dist/test/migrations/domain/1781000000000-AddPostMediaAndMediaStatus.d.ts +7 -0
  57. package/dist/test/migrations/domain/1781000000000-AddPostMediaAndMediaStatus.d.ts.map +1 -0
  58. package/dist/test/migrations/domain/1781000000000-AddPostMediaAndMediaStatus.js +24 -0
  59. package/dist/test/migrations/domain/1781000000000-AddPostMediaAndMediaStatus.js.map +1 -0
  60. package/dist/test/unit/post-media.unit.spec.d.ts +2 -0
  61. package/dist/test/unit/post-media.unit.spec.d.ts.map +1 -0
  62. package/dist/test/unit/post-media.unit.spec.js +97 -0
  63. package/dist/test/unit/post-media.unit.spec.js.map +1 -0
  64. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.8.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Storage Wave 2 implementation:
8
+ - shared: add StorageStream enum (outbox success/failure, file scanned/rejected, attachment rejected) and event/user replacement streams
9
+ - domain-post: add post_media entity & model, PostMediaStatus, PostMediaScanStatus, reader visibility filtering, and updateMediaScanStatus
10
+ - domain-event: add cover_file_id & cover_status (CoverStatus enum), idempotent creation, and updateCover with event.cover_replaced outbox emission
11
+ - domain-user: add avatar_file_id, updateAvatar with user.avatar_replaced outbox emission, and deprecate logoPath
12
+ - errors-nest: add storage domain errors (FILE_NOT_FOUND, STORAGE_ATTACHMENT_FAILED, STORAGE_TIMEOUT, INVALID_FILE_ATTACHMENT)
13
+ - storage-client: new package providing NestJS StorageClientService, StorageClientModule, WithMetadata typing, and ConfirmFileAttachment helper
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies []:
18
+ - @volontariapp/errors-nest@0.14.0
19
+ - @volontariapp/database@3.10.3
20
+ - @volontariapp/messaging@2.25.3
21
+ - @volontariapp/outbox@0.10.7
22
+
3
23
  ## 3.7.9
4
24
 
5
25
  ### Patch Changes
@@ -1,3 +1,4 @@
1
1
  export * from './post.entity.js';
2
+ export * from './post-media.entity.js';
2
3
  export * from './comment.entity.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from './post.entity.js';
2
+ export * from './post-media.entity.js';
2
3
  export * from './comment.entity.js';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { PostMediaScanStatus } from '../enums/index.js';
2
+ export declare class PostMediaEntity {
3
+ id: string;
4
+ postId: string;
5
+ fileId: string;
6
+ position: number;
7
+ scanStatus: PostMediaScanStatus;
8
+ }
9
+ //# sourceMappingURL=post-media.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-media.entity.d.ts","sourceRoot":"","sources":["../../src/entities/post-media.entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,qBAAa,eAAe;IAC1B,EAAE,EAAG,MAAM,CAAC;IACZ,MAAM,EAAG,MAAM,CAAC;IAChB,MAAM,EAAG,MAAM,CAAC;IAChB,QAAQ,EAAG,MAAM,CAAC;IAClB,UAAU,EAAG,mBAAmB,CAAC;CAClC"}
@@ -0,0 +1,8 @@
1
+ export class PostMediaEntity {
2
+ id;
3
+ postId;
4
+ fileId;
5
+ position;
6
+ scanStatus;
7
+ }
8
+ //# sourceMappingURL=post-media.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-media.entity.js","sourceRoot":"","sources":["../../src/entities/post-media.entity.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,eAAe;IAC1B,EAAE,CAAU;IACZ,MAAM,CAAU;IAChB,MAAM,CAAU;IAChB,QAAQ,CAAU;IAClB,UAAU,CAAuB;CAClC"}
@@ -1,4 +1,6 @@
1
1
  import type { SagaStatus } from '@volontariapp/shared';
2
+ import { PostMediaStatus } from '../enums/index.js';
3
+ import type { PostMediaEntity } from './post-media.entity.js';
2
4
  export declare class PostEntity {
3
5
  id: string;
4
6
  authorId: string;
@@ -8,5 +10,7 @@ export declare class PostEntity {
8
10
  createdAt: Date;
9
11
  updatedAt: Date;
10
12
  eventId?: string;
13
+ media_status: PostMediaStatus;
14
+ media?: PostMediaEntity[];
11
15
  }
12
16
  //# sourceMappingURL=post.entity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"post.entity.d.ts","sourceRoot":"","sources":["../../src/entities/post.entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBAAa,UAAU;IACrB,EAAE,EAAG,MAAM,CAAC;IACZ,QAAQ,EAAG,MAAM,CAAC;IAClB,WAAW,EAAG,UAAU,CAAC;IACzB,KAAK,EAAG,MAAM,CAAC;IACf,OAAO,EAAG,MAAM,CAAC;IACjB,SAAS,EAAG,IAAI,CAAC;IACjB,SAAS,EAAG,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"post.entity.d.ts","sourceRoot":"","sources":["../../src/entities/post.entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,qBAAa,UAAU;IACrB,EAAE,EAAG,MAAM,CAAC;IACZ,QAAQ,EAAG,MAAM,CAAC;IAClB,WAAW,EAAG,UAAU,CAAC;IACzB,KAAK,EAAG,MAAM,CAAC;IACf,OAAO,EAAG,MAAM,CAAC;IACjB,SAAS,EAAG,IAAI,CAAC;IACjB,SAAS,EAAG,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,eAAe,CAAwB;IACrD,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;CAC3B"}
@@ -1,3 +1,4 @@
1
+ import { PostMediaStatus } from '../enums/index.js';
1
2
  export class PostEntity {
2
3
  id;
3
4
  authorId;
@@ -7,5 +8,7 @@ export class PostEntity {
7
8
  createdAt;
8
9
  updatedAt;
9
10
  eventId;
11
+ media_status = PostMediaStatus.NONE;
12
+ media;
10
13
  }
11
14
  //# sourceMappingURL=post.entity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"post.entity.js","sourceRoot":"","sources":["../../src/entities/post.entity.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,UAAU;IACrB,EAAE,CAAU;IACZ,QAAQ,CAAU;IAClB,WAAW,CAAc;IACzB,KAAK,CAAU;IACf,OAAO,CAAU;IACjB,SAAS,CAAQ;IACjB,SAAS,CAAQ;IACjB,OAAO,CAAU;CAClB"}
1
+ {"version":3,"file":"post.entity.js","sourceRoot":"","sources":["../../src/entities/post.entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,MAAM,OAAO,UAAU;IACrB,EAAE,CAAU;IACZ,QAAQ,CAAU;IAClB,WAAW,CAAc;IACzB,KAAK,CAAU;IACf,OAAO,CAAU;IACjB,SAAS,CAAQ;IACjB,SAAS,CAAQ;IACjB,OAAO,CAAU;IACjB,YAAY,GAAoB,eAAe,CAAC,IAAI,CAAC;IACrD,KAAK,CAAqB;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export * from './post-media-status.enum.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/enums/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './post-media-status.enum.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enums/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,13 @@
1
+ export declare enum PostMediaStatus {
2
+ NONE = "NONE",
3
+ PENDING = "PENDING",
4
+ READY = "READY",
5
+ REJECTED = "REJECTED"
6
+ }
7
+ export declare enum PostMediaScanStatus {
8
+ AWAITING_UPLOAD = "AWAITING_UPLOAD",
9
+ SCANNING = "SCANNING",
10
+ CLEAN = "CLEAN",
11
+ REJECTED = "REJECTED"
12
+ }
13
+ //# sourceMappingURL=post-media-status.enum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-media-status.enum.d.ts","sourceRoot":"","sources":["../../src/enums/post-media-status.enum.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,QAAQ,aAAa;CACtB;AAED,oBAAY,mBAAmB;IAC7B,eAAe,oBAAoB;IACnC,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,QAAQ,aAAa;CACtB"}
@@ -0,0 +1,15 @@
1
+ export var PostMediaStatus;
2
+ (function (PostMediaStatus) {
3
+ PostMediaStatus["NONE"] = "NONE";
4
+ PostMediaStatus["PENDING"] = "PENDING";
5
+ PostMediaStatus["READY"] = "READY";
6
+ PostMediaStatus["REJECTED"] = "REJECTED";
7
+ })(PostMediaStatus || (PostMediaStatus = {}));
8
+ export var PostMediaScanStatus;
9
+ (function (PostMediaScanStatus) {
10
+ PostMediaScanStatus["AWAITING_UPLOAD"] = "AWAITING_UPLOAD";
11
+ PostMediaScanStatus["SCANNING"] = "SCANNING";
12
+ PostMediaScanStatus["CLEAN"] = "CLEAN";
13
+ PostMediaScanStatus["REJECTED"] = "REJECTED";
14
+ })(PostMediaScanStatus || (PostMediaScanStatus = {}));
15
+ //# sourceMappingURL=post-media-status.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-media-status.enum.js","sourceRoot":"","sources":["../../src/enums/post-media-status.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,sCAAmB,CAAA;IACnB,kCAAe,CAAA;IACf,wCAAqB,CAAA;AACvB,CAAC,EALW,eAAe,KAAf,eAAe,QAK1B;AAED,MAAM,CAAN,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC7B,0DAAmC,CAAA;IACnC,4CAAqB,CAAA;IACrB,sCAAe,CAAA;IACf,4CAAqB,CAAA;AACvB,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,QAK9B"}
package/dist/index.d.ts CHANGED
@@ -3,4 +3,5 @@ export * from './models/index.js';
3
3
  export * from './services/index.js';
4
4
  export * from './repositories/index.js';
5
5
  export * from './constants/index.js';
6
+ export * from './enums/index.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -4,5 +4,6 @@ export * from './models/index.js';
4
4
  export * from './services/index.js';
5
5
  export * from './repositories/index.js';
6
6
  export * from './constants/index.js';
7
+ export * from './enums/index.js';
7
8
  registerPostMappings();
8
9
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AAErC,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AAEjC,oBAAoB,EAAE,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from './post.model.js';
2
+ export * from './post-media.model.js';
2
3
  export * from './comment.model.js';
3
4
  export * from './mapper.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from './post.model.js';
2
+ export * from './post-media.model.js';
2
3
  export * from './comment.model.js';
3
4
  export * from './mapper.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../../src/models/mapper.ts"],"names":[],"mappings":"AAWA,wBAAgB,oBAAoB,SAKnC"}
1
+ {"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../../src/models/mapper.ts"],"names":[],"mappings":"AAYA,wBAAgB,oBAAoB,SAMnC"}
@@ -1,9 +1,11 @@
1
1
  import { databaseMapper, EventQueueEntity, EventQueueModel, JobsOutboxEntity, JobsOutboxModel, } from '@volontariapp/database';
2
- import { PostEntity, CommentEntity } from '../entities/index.js';
2
+ import { PostEntity, CommentEntity, PostMediaEntity } from '../entities/index.js';
3
3
  import { PostModel } from './post.model.js';
4
4
  import { CommentModel } from './comment.model.js';
5
+ import { PostMediaModel } from './post-media.model.js';
5
6
  export function registerPostMappings() {
6
7
  databaseMapper.registerBidirectional(PostEntity, PostModel);
8
+ databaseMapper.registerBidirectional(PostMediaEntity, PostMediaModel);
7
9
  databaseMapper.registerBidirectional(CommentEntity, CommentModel);
8
10
  databaseMapper.registerBidirectional(EventQueueEntity, EventQueueModel);
9
11
  databaseMapper.registerBidirectional(JobsOutboxEntity, JobsOutboxModel);
@@ -1 +1 @@
1
- {"version":3,"file":"mapper.js","sourceRoot":"","sources":["../../src/models/mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,UAAU,oBAAoB;IAClC,cAAc,CAAC,qBAAqB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC5D,cAAc,CAAC,qBAAqB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAClE,cAAc,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;IACxE,cAAc,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"mapper.js","sourceRoot":"","sources":["../../src/models/mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,UAAU,oBAAoB;IAClC,cAAc,CAAC,qBAAqB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC5D,cAAc,CAAC,qBAAqB,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;IACtE,cAAc,CAAC,qBAAqB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAClE,cAAc,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;IACxE,cAAc,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { PostMediaScanStatus } from '../enums/index.js';
2
+ import type { PostModel } from './post.model.js';
3
+ export declare class PostMediaModel {
4
+ id: string;
5
+ postId: string;
6
+ fileId: string;
7
+ position: number;
8
+ scanStatus: PostMediaScanStatus;
9
+ post?: PostModel;
10
+ }
11
+ //# sourceMappingURL=post-media.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-media.model.d.ts","sourceRoot":"","sources":["../../src/models/post-media.model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,qBAEa,cAAc;IAEzB,EAAE,EAAG,MAAM,CAAC;IAIZ,MAAM,EAAG,MAAM,CAAC;IAGhB,MAAM,EAAG,MAAM,CAAC;IAGhB,QAAQ,EAAG,MAAM,CAAC;IAQlB,UAAU,EAAG,mBAAmB,CAAC;IAIjC,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB"}
@@ -0,0 +1,56 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Entity, PrimaryColumn, Column, Index, ManyToOne, JoinColumn } from 'typeorm';
11
+ import { PostMediaScanStatus } from '../enums/index.js';
12
+ let PostMediaModel = class PostMediaModel {
13
+ id;
14
+ postId;
15
+ fileId;
16
+ position;
17
+ scanStatus;
18
+ post;
19
+ };
20
+ __decorate([
21
+ PrimaryColumn({ type: 'uuid' }),
22
+ __metadata("design:type", String)
23
+ ], PostMediaModel.prototype, "id", void 0);
24
+ __decorate([
25
+ Column({ name: 'post_id', type: 'uuid' }),
26
+ Index(),
27
+ __metadata("design:type", String)
28
+ ], PostMediaModel.prototype, "postId", void 0);
29
+ __decorate([
30
+ Column({ name: 'file_id', type: 'uuid' }),
31
+ __metadata("design:type", String)
32
+ ], PostMediaModel.prototype, "fileId", void 0);
33
+ __decorate([
34
+ Column({ type: 'int', default: 0 }),
35
+ __metadata("design:type", Number)
36
+ ], PostMediaModel.prototype, "position", void 0);
37
+ __decorate([
38
+ Column({
39
+ name: 'scan_status',
40
+ type: 'varchar',
41
+ length: 32,
42
+ default: PostMediaScanStatus.AWAITING_UPLOAD,
43
+ }),
44
+ __metadata("design:type", String)
45
+ ], PostMediaModel.prototype, "scanStatus", void 0);
46
+ __decorate([
47
+ ManyToOne('PostModel', 'media', { onDelete: 'CASCADE' }),
48
+ JoinColumn({ name: 'post_id' }),
49
+ __metadata("design:type", Function)
50
+ ], PostMediaModel.prototype, "post", void 0);
51
+ PostMediaModel = __decorate([
52
+ Entity('post_media'),
53
+ Index('idx_post_media_post', ['postId'])
54
+ ], PostMediaModel);
55
+ export { PostMediaModel };
56
+ //# sourceMappingURL=post-media.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-media.model.js","sourceRoot":"","sources":["../../src/models/post-media.model.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAKjD,IAAM,cAAc,GAApB,MAAM,cAAc;IAEzB,EAAE,CAAU;IAIZ,MAAM,CAAU;IAGhB,MAAM,CAAU;IAGhB,QAAQ,CAAU;IAQlB,UAAU,CAAuB;IAIjC,IAAI,CAAa;CAClB,CAAA;AAvBC;IADC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;0CACpB;AAIZ;IAFC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACzC,KAAK,EAAE;;8CACQ;AAGhB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;8CAC1B;AAGhB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;gDAClB;AAQlB;IANC,MAAM,CAAC;QACN,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,mBAAmB,CAAC,eAAe;KAC7C,CAAC;;kDAC+B;AAIjC;IAFC,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACxD,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;4CACf;AAxBN,cAAc;IAF1B,MAAM,CAAC,YAAY,CAAC;IACpB,KAAK,CAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,CAAC;GAC5B,cAAc,CAyB1B"}
@@ -1,4 +1,6 @@
1
1
  import { SagaStatus } from '@volontariapp/shared';
2
+ import { PostMediaStatus } from '../enums/index.js';
3
+ import type { PostMediaModel } from './post-media.model.js';
2
4
  export declare class PostModel {
3
5
  id: string;
4
6
  authorId: string;
@@ -7,5 +9,7 @@ export declare class PostModel {
7
9
  createdAt: Date;
8
10
  updatedAt: Date;
9
11
  saga_status: SagaStatus;
12
+ media_status: PostMediaStatus;
13
+ media?: PostMediaModel[];
10
14
  }
11
15
  //# sourceMappingURL=post.model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"post.model.d.ts","sourceRoot":"","sources":["../../src/models/post.model.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,qBACa,SAAS;IAEpB,EAAE,EAAG,MAAM,CAAC;IAGZ,QAAQ,EAAG,MAAM,CAAC;IAGlB,KAAK,EAAG,MAAM,CAAC;IAGf,OAAO,EAAG,MAAM,CAAC;IAGjB,SAAS,EAAG,IAAI,CAAC;IAGjB,SAAS,EAAG,IAAI,CAAC;IAQjB,WAAW,EAAG,UAAU,CAAC;CAC1B"}
1
+ {"version":3,"file":"post.model.d.ts","sourceRoot":"","sources":["../../src/models/post.model.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,qBACa,SAAS;IAEpB,EAAE,EAAG,MAAM,CAAC;IAGZ,QAAQ,EAAG,MAAM,CAAC;IAGlB,KAAK,EAAG,MAAM,CAAC;IAGf,OAAO,EAAG,MAAM,CAAC;IAGjB,SAAS,EAAG,IAAI,CAAC;IAGjB,SAAS,EAAG,IAAI,CAAC;IAQjB,WAAW,EAAG,UAAU,CAAC;IASzB,YAAY,EAAG,eAAe,CAAC;IAG/B,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;CAC1B"}
@@ -7,8 +7,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, Index, } from 'typeorm';
10
+ import { Entity, PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn, Index, OneToMany, } from 'typeorm';
11
11
  import { SagaStatus } from '@volontariapp/shared';
12
+ import { PostMediaStatus } from '../enums/index.js';
12
13
  let PostModel = class PostModel {
13
14
  id;
14
15
  authorId;
@@ -17,9 +18,11 @@ let PostModel = class PostModel {
17
18
  createdAt;
18
19
  updatedAt;
19
20
  saga_status;
21
+ media_status;
22
+ media;
20
23
  };
21
24
  __decorate([
22
- PrimaryGeneratedColumn('uuid'),
25
+ PrimaryColumn({ type: 'uuid' }),
23
26
  __metadata("design:type", String)
24
27
  ], PostModel.prototype, "id", void 0);
25
28
  __decorate([
@@ -51,6 +54,20 @@ __decorate([
51
54
  Index(),
52
55
  __metadata("design:type", String)
53
56
  ], PostModel.prototype, "saga_status", void 0);
57
+ __decorate([
58
+ Column({
59
+ name: 'media_status',
60
+ type: 'varchar',
61
+ length: 32,
62
+ default: PostMediaStatus.NONE,
63
+ }),
64
+ Index(),
65
+ __metadata("design:type", String)
66
+ ], PostModel.prototype, "media_status", void 0);
67
+ __decorate([
68
+ OneToMany('PostMediaModel', 'post', { cascade: true }),
69
+ __metadata("design:type", Array)
70
+ ], PostModel.prototype, "media", void 0);
54
71
  PostModel = __decorate([
55
72
  Entity('posts')
56
73
  ], PostModel);
@@ -1 +1 @@
1
- {"version":3,"file":"post.model.js","sourceRoot":"","sources":["../../src/models/post.model.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,MAAM,EACN,sBAAsB,EACtB,MAAM,EACN,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,GACN,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAG3C,IAAM,SAAS,GAAf,MAAM,SAAS;IAEpB,EAAE,CAAU;IAGZ,QAAQ,CAAU;IAGlB,KAAK,CAAU;IAGf,OAAO,CAAU;IAGjB,SAAS,CAAQ;IAGjB,SAAS,CAAQ;IAQjB,WAAW,CAAc;CAC1B,CAAA;AAxBC;IADC,sBAAsB,CAAC,MAAM,CAAC;;qCACnB;AAGZ;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;2CACP;AAGlB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;wCACxC;AAGf;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;0CACxB;AAGjB;IADC,gBAAgB,EAAE;8BACP,IAAI;4CAAC;AAGjB;IADC,gBAAgB,EAAE;8BACP,IAAI;4CAAC;AAQjB;IANC,MAAM,CAAC;QACN,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,UAAU,CAAC,OAAO;KAC5B,CAAC;IACD,KAAK,EAAE;;8CACiB;AAzBd,SAAS;IADrB,MAAM,CAAC,OAAO,CAAC;GACH,SAAS,CA0BrB"}
1
+ {"version":3,"file":"post.model.js","sourceRoot":"","sources":["../../src/models/post.model.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,MAAM,EACN,aAAa,EACb,MAAM,EACN,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,EACL,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAI7C,IAAM,SAAS,GAAf,MAAM,SAAS;IAEpB,EAAE,CAAU;IAGZ,QAAQ,CAAU;IAGlB,KAAK,CAAU;IAGf,OAAO,CAAU;IAGjB,SAAS,CAAQ;IAGjB,SAAS,CAAQ;IAQjB,WAAW,CAAc;IASzB,YAAY,CAAmB;IAG/B,KAAK,CAAoB;CAC1B,CAAA;AApCC;IADC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;qCACpB;AAGZ;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;2CACP;AAGlB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;wCACxC;AAGf;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;0CACxB;AAGjB;IADC,gBAAgB,EAAE;8BACP,IAAI;4CAAC;AAGjB;IADC,gBAAgB,EAAE;8BACP,IAAI;4CAAC;AAQjB;IANC,MAAM,CAAC;QACN,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,UAAU,CAAC,OAAO;KAC5B,CAAC;IACD,KAAK,EAAE;;8CACiB;AASzB;IAPC,MAAM,CAAC;QACN,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,eAAe,CAAC,IAAI;KAC9B,CAAC;IACD,KAAK,EAAE;;+CACuB;AAG/B;IADC,SAAS,CAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;wCAC9B;AArCd,SAAS;IADrB,MAAM,CAAC,OAAO,CAAC;GACH,SAAS,CAsCrB"}
@@ -1,17 +1,23 @@
1
1
  import type { PaginatedResult } from '@volontariapp/database';
2
2
  import type { PostEntity } from '../../entities/index.js';
3
+ import type { PostMediaScanStatus } from '../../enums/index.js';
4
+ export interface CreatePostWithMediaOptions {
5
+ fileIds?: string[];
6
+ fileScanStatuses?: Record<string, PostMediaScanStatus>;
7
+ }
3
8
  export interface IPostRepository {
4
- findById(id: string): Promise<PostEntity | null>;
5
- findByAuthorId(id: string): Promise<PostEntity[]>;
9
+ findById(id: string, relations?: string[], readerId?: string): Promise<PostEntity | null>;
10
+ findByAuthorId(id: string, relations?: string[]): Promise<PostEntity[]>;
6
11
  findAll(relations?: string[]): Promise<PostEntity[]>;
7
- create(event: Partial<PostEntity>): Promise<PostEntity>;
8
- createWithPostCreated(data: Partial<PostEntity>): Promise<PostEntity>;
12
+ create(post: Partial<PostEntity>): Promise<PostEntity>;
13
+ createWithPostCreated(data: Partial<PostEntity> & CreatePostWithMediaOptions): Promise<PostEntity>;
9
14
  update(id: string, data: Partial<PostEntity>): Promise<PostEntity | null>;
15
+ updateMediaScanStatus(postId: string, fileId: string, scanStatus: PostMediaScanStatus): Promise<PostEntity | null>;
10
16
  delete(id: string): Promise<boolean>;
11
17
  deleteWithPostDeleted(id: string): Promise<boolean>;
12
18
  deleteByAuthorId(authorId: string): Promise<number>;
13
- search(searchTerm: string): Promise<PostEntity[]>;
14
- listPaginated(page: number, limit: number, authorId?: string): Promise<PaginatedResult<PostEntity>>;
19
+ search(searchTerm: string, readerId?: string): Promise<PostEntity[]>;
20
+ listPaginated(page: number, limit: number, authorId?: string, readerId?: string): Promise<PaginatedResult<PostEntity>>;
15
21
  purgePostsByAuthor(authorId: string): Promise<number>;
16
22
  }
17
23
  //# sourceMappingURL=post.repository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"post.repository.d.ts","sourceRoot":"","sources":["../../../src/repositories/interfaces/post.repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACjD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACxD,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC1E,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAClD,aAAa,CACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;IACxC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvD"}
1
+ {"version":3,"file":"post.repository.d.ts","sourceRoot":"","sources":["../../../src/repositories/interfaces/post.repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,WAAW,0BAA0B;IACzC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC1F,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACxE,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACvD,qBAAqB,CACnB,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,0BAA0B,GACrD,OAAO,CAAC,UAAU,CAAC,CAAC;IACvB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC1E,qBAAqB,CACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,mBAAmB,GAC9B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACrE,aAAa,CACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;IACxC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvD"}
@@ -2,16 +2,18 @@ import type { Repository } from '@volontariapp/database';
2
2
  import { BaseRepository, PaginatedResult } from '@volontariapp/database';
3
3
  import { PostModel } from '../models/index.js';
4
4
  import { PostEntity } from '../entities/index.js';
5
- import { IPostRepository } from './interfaces/index.js';
5
+ import { PostMediaScanStatus } from '../enums/index.js';
6
+ import type { IPostRepository, CreatePostWithMediaOptions } from './interfaces/index.js';
6
7
  export declare class PostgresPostRepository extends BaseRepository<PostModel, PostEntity> implements IPostRepository {
7
8
  constructor(repository: Repository<PostModel>);
8
- findById(id: string, relations?: string[]): Promise<PostEntity | null>;
9
+ findById(id: string, relations?: string[], readerId?: string): Promise<PostEntity | null>;
9
10
  findByAuthorId(authorId: string, relations?: string[]): Promise<PostEntity[]>;
10
11
  findAll(relations?: string[]): Promise<PostEntity[]>;
11
- search(searchTerm: string): Promise<PostEntity[]>;
12
- listPaginated(page: number, limit: number, authorId?: string): Promise<PaginatedResult<PostEntity>>;
12
+ search(searchTerm: string, readerIdOrFields?: string | string[]): Promise<PostEntity[]>;
13
+ listPaginated(page: number, limit: number, authorId?: string, readerId?: string): Promise<PaginatedResult<PostEntity>>;
13
14
  deleteByAuthorId(authorId: string): Promise<number>;
14
- createWithPostCreated(data: Partial<PostEntity>): Promise<PostEntity>;
15
+ createWithPostCreated(data: Partial<PostEntity> & CreatePostWithMediaOptions): Promise<PostEntity>;
16
+ updateMediaScanStatus(postId: string, fileId: string, scanStatus: PostMediaScanStatus): Promise<PostEntity | null>;
15
17
  deleteWithPostDeleted(id: string): Promise<boolean>;
16
18
  purgePostsByAuthor(authorId: string): Promise<number>;
17
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-post.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/postgres-post.repository.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,cAAc,EAGd,eAAe,EAGhB,MAAM,wBAAwB,CAAC;AAQhC,OAAO,EAAE,SAAS,EAAgB,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,qBACa,sBACX,SAAQ,cAAc,CAAC,SAAS,EAAE,UAAU,CAC5C,YAAW,eAAe;gBAIxB,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC;IAK7B,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAO1E,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAOjF,OAAO,CAAC,SAAS,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAOxD,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIjD,aAAa,CACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAKjC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKnD,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAmCrE,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BnD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAc5D"}
1
+ {"version":3,"file":"postgres-post.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/postgres-post.repository.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,cAAc,EAGd,eAAe,EAGhB,MAAM,wBAAwB,CAAC;AAShC,OAAO,EAAE,SAAS,EAAgC,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAmB,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEzF,qBACa,sBACX,SAAQ,cAAc,CAAC,SAAS,EAAE,UAAU,CAC5C,YAAW,eAAe;gBAIxB,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC;IAK7B,QAAQ,CACZ,EAAE,EAAE,MAAM,EACV,SAAS,GAAE,MAAM,EAAO,EACxB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAmBvB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAOjF,OAAO,CAAC,SAAS,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAOxD,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAevF,aAAa,CACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAwCjC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKnD,qBAAqB,CACzB,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,0BAA0B,GACrD,OAAO,CAAC,UAAU,CAAC;IA+GhB,qBAAqB,CACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,mBAAmB,GAC9B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAwCvB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BnD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAe5D"}