@venturialstd/social-network 0.0.7 → 0.0.9
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.
- package/dist/constants/social-network.constant.d.ts +4 -0
- package/dist/constants/social-network.constant.d.ts.map +1 -1
- package/dist/constants/social-network.constant.js +6 -1
- package/dist/constants/social-network.constant.js.map +1 -1
- package/dist/entities/post.entity.d.ts +6 -1
- package/dist/entities/post.entity.d.ts.map +1 -1
- package/dist/entities/post.entity.js +2 -2
- package/dist/entities/post.entity.js.map +1 -1
- package/dist/services/feed.service.js +4 -4
- package/dist/services/friend-request.service.d.ts +4 -0
- package/dist/services/friend-request.service.d.ts.map +1 -1
- package/dist/services/friend-request.service.js +61 -7
- package/dist/services/friend-request.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"social-network.constant.d.ts","sourceRoot":"","sources":["../../src/constants/social-network.constant.ts"],"names":[],"mappings":"AAGA,oBAAY,iBAAiB;IAC3B,IAAI,SAAS;IACb,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAKD,oBAAY,YAAY;IACtB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,KAAK,UAAU;CAChB;AAKD,oBAAY,mBAAmB;IAC7B,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAKD,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAKD,oBAAY,cAAc;IACxB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAMD,oBAAY,mBAAmB;IAC7B,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAChB"}
|
|
1
|
+
{"version":3,"file":"social-network.constant.d.ts","sourceRoot":"","sources":["../../src/constants/social-network.constant.ts"],"names":[],"mappings":"AAGA,oBAAY,iBAAiB;IAC3B,IAAI,SAAS;IACb,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAKD,oBAAY,YAAY;IACtB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,KAAK,UAAU;CAChB;AAKD,oBAAY,mBAAmB;IAC7B,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAKD,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAKD,oBAAY,cAAc;IACxB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAKD,oBAAY,aAAa;IACvB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAMD,oBAAY,mBAAmB;IAC7B,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAChB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TaggableContentType = exports.StoryMediaType = exports.FriendshipStatus = exports.FriendRequestStatus = exports.ReactionType = exports.ContentTargetType = void 0;
|
|
3
|
+
exports.TaggableContentType = exports.PostMediaType = exports.StoryMediaType = exports.FriendshipStatus = exports.FriendRequestStatus = exports.ReactionType = exports.ContentTargetType = void 0;
|
|
4
4
|
var ContentTargetType;
|
|
5
5
|
(function (ContentTargetType) {
|
|
6
6
|
ContentTargetType["POST"] = "POST";
|
|
@@ -32,6 +32,11 @@ var StoryMediaType;
|
|
|
32
32
|
StoryMediaType["IMAGE"] = "IMAGE";
|
|
33
33
|
StoryMediaType["VIDEO"] = "VIDEO";
|
|
34
34
|
})(StoryMediaType || (exports.StoryMediaType = StoryMediaType = {}));
|
|
35
|
+
var PostMediaType;
|
|
36
|
+
(function (PostMediaType) {
|
|
37
|
+
PostMediaType["IMAGE"] = "IMAGE";
|
|
38
|
+
PostMediaType["VIDEO"] = "VIDEO";
|
|
39
|
+
})(PostMediaType || (exports.PostMediaType = PostMediaType = {}));
|
|
35
40
|
var TaggableContentType;
|
|
36
41
|
(function (TaggableContentType) {
|
|
37
42
|
TaggableContentType["POST"] = "POST";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"social-network.constant.js","sourceRoot":"","sources":["../../src/constants/social-network.constant.ts"],"names":[],"mappings":";;;AAGA,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,kCAAa,CAAA;IACb,kCAAa,CAAA;IACb,wCAAmB,CAAA;AACrB,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B;AAKD,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,6BAAa,CAAA;IACb,6BAAa,CAAA;IACb,2BAAW,CAAA;IACX,2BAAW,CAAA;IACX,+BAAe,CAAA;AACjB,CAAC,EAPW,YAAY,4BAAZ,YAAY,QAOvB;AAKD,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,4CAAqB,CAAA;IACrB,4CAAqB,CAAA;AACvB,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B;AAKD,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;AACrB,CAAC,EAHW,gBAAgB,gCAAhB,gBAAgB,QAG3B;AAKD,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,iCAAe,CAAA;IACf,iCAAe,CAAA;AACjB,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AAMD,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,oCAAa,CAAA;IACb,oCAAa,CAAA;IACb,sCAAe,CAAA;AACjB,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B"}
|
|
1
|
+
{"version":3,"file":"social-network.constant.js","sourceRoot":"","sources":["../../src/constants/social-network.constant.ts"],"names":[],"mappings":";;;AAGA,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,kCAAa,CAAA;IACb,kCAAa,CAAA;IACb,wCAAmB,CAAA;AACrB,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B;AAKD,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,6BAAa,CAAA;IACb,6BAAa,CAAA;IACb,2BAAW,CAAA;IACX,2BAAW,CAAA;IACX,+BAAe,CAAA;AACjB,CAAC,EAPW,YAAY,4BAAZ,YAAY,QAOvB;AAKD,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,4CAAqB,CAAA;IACrB,4CAAqB,CAAA;AACvB,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B;AAKD,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;AACrB,CAAC,EAHW,gBAAgB,gCAAhB,gBAAgB,QAG3B;AAKD,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,iCAAe,CAAA;IACf,iCAAe,CAAA;AACjB,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AAKD,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,gCAAe,CAAA;IACf,gCAAe,CAAA;AACjB,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB;AAMD,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,oCAAa,CAAA;IACb,oCAAa,CAAA;IACb,sCAAe,CAAA;AACjB,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import { PostMediaType } from '../constants/social-network.constant';
|
|
2
|
+
export interface PostMediaItem {
|
|
3
|
+
url: string;
|
|
4
|
+
type: PostMediaType;
|
|
5
|
+
}
|
|
1
6
|
export declare class Post {
|
|
2
7
|
id: string;
|
|
3
8
|
userId: string;
|
|
4
9
|
caption: string;
|
|
5
|
-
|
|
10
|
+
media: PostMediaItem[];
|
|
6
11
|
elements: Record<string, unknown>[];
|
|
7
12
|
location: string;
|
|
8
13
|
allowComments: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post.entity.d.ts","sourceRoot":"","sources":["../../src/entities/post.entity.ts"],"names":[],"mappings":"AAgBA,qBACa,IAAI;IAEf,EAAE,EAAE,MAAM,CAAC;IAMX,MAAM,EAAE,MAAM,CAAC;IAKf,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"post.entity.d.ts","sourceRoot":"","sources":["../../src/entities/post.entity.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,qBACa,IAAI;IAEf,EAAE,EAAE,MAAM,CAAC;IAMX,MAAM,EAAE,MAAM,CAAC;IAKf,OAAO,EAAE,MAAM,CAAC;IAShB,KAAK,EAAE,aAAa,EAAE,CAAC;IASvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAKpC,QAAQ,EAAE,MAAM,CAAC;IAMjB,aAAa,EAAE,OAAO,CAAC;IAIvB,UAAU,EAAE,OAAO,CAAC;IAIpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAQlC,SAAS,EAAE,IAAI,CAAC;IAQhB,SAAS,EAAE,IAAI,CAAC;CACjB"}
|
|
@@ -16,7 +16,7 @@ let Post = class Post {
|
|
|
16
16
|
id;
|
|
17
17
|
userId;
|
|
18
18
|
caption;
|
|
19
|
-
|
|
19
|
+
media;
|
|
20
20
|
elements;
|
|
21
21
|
location;
|
|
22
22
|
allowComments;
|
|
@@ -48,7 +48,7 @@ __decorate([
|
|
|
48
48
|
(0, class_validator_1.IsOptional)(),
|
|
49
49
|
(0, typeorm_1.Column)({ type: 'jsonb', default: [] }),
|
|
50
50
|
__metadata("design:type", Array)
|
|
51
|
-
], Post.prototype, "
|
|
51
|
+
], Post.prototype, "media", void 0);
|
|
52
52
|
__decorate([
|
|
53
53
|
(0, class_validator_1.IsOptional)(),
|
|
54
54
|
(0, typeorm_1.Column)({ type: 'jsonb', nullable: true, default: [] }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post.entity.js","sourceRoot":"","sources":["../../src/entities/post.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAMyB;AACzB,qCAOiB;
|
|
1
|
+
{"version":3,"file":"post.entity.js","sourceRoot":"","sources":["../../src/entities/post.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAMyB;AACzB,qCAOiB;AAUV,IAAM,IAAI,GAAV,MAAM,IAAI;IAEf,EAAE,CAAS;IAMX,MAAM,CAAS;IAKf,OAAO,CAAS;IAShB,KAAK,CAAkB;IASvB,QAAQ,CAA4B;IAKpC,QAAQ,CAAS;IAMjB,aAAa,CAAU;IAIvB,UAAU,CAAU;IAIpB,QAAQ,CAA0B;IAQlC,SAAS,CAAO;IAQhB,SAAS,CAAO;CACjB,CAAA;AAnEY,oBAAI;AAEf;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;gCACpB;AAMX;IAJC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACxB,IAAA,eAAK,GAAE;;oCACO;AAKf;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qCACzB;AAShB;IAHC,IAAA,yBAAO,GAAE;IACT,IAAA,4BAAU,GAAE;IACZ,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;mCAChB;AASvB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;sCACnB;AAKpC;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sCACV;AAMjB;IAFC,IAAA,2BAAS,GAAE;IACX,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;2CACH;AAIvB;IAFC,IAAA,2BAAS,GAAE;IACX,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;wCACP;AAIpB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sCACR;AAQlC;IANC,IAAA,0BAAgB,EAAC;QAChB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB;KACnC,CAAC;8BACS,IAAI;uCAAC;AAQhB;IANC,IAAA,0BAAgB,EAAC;QAChB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB;KACnC,CAAC;8BACS,IAAI;uCAAC;eAlEL,IAAI;IADhB,IAAA,gBAAM,EAAC,aAAa,CAAC;GACT,IAAI,CAmEhB"}
|
|
@@ -51,10 +51,10 @@ let FeedService = class FeedService {
|
|
|
51
51
|
if (options.authorIds?.length) {
|
|
52
52
|
qb.andWhere('p.userId IN (:...authorIds)', { authorIds: options.authorIds });
|
|
53
53
|
}
|
|
54
|
-
const scoreExpr = `(
|
|
55
|
-
(SELECT COUNT(*) FROM social_comment c WHERE c."targetType"::text = 'POST' AND c."targetId" = p.id) * :commentWeight +
|
|
56
|
-
(SELECT COUNT(*) FROM social_reaction r WHERE r."targetType"::text = 'POST' AND r."targetId" = p.id) * :reactionWeight +
|
|
57
|
-
(1.0 / (1.0 + EXTRACT(EPOCH FROM (NOW() - p."createdAt")) / 86400.0)) * :recencyWeight
|
|
54
|
+
const scoreExpr = `(
|
|
55
|
+
(SELECT COUNT(*) FROM social_comment c WHERE c."targetType"::text = 'POST' AND c."targetId" = p.id) * :commentWeight +
|
|
56
|
+
(SELECT COUNT(*) FROM social_reaction r WHERE r."targetType"::text = 'POST' AND r."targetId" = p.id) * :reactionWeight +
|
|
57
|
+
(1.0 / (1.0 + EXTRACT(EPOCH FROM (NOW() - p."createdAt")) / 86400.0)) * :recencyWeight
|
|
58
58
|
)`;
|
|
59
59
|
qb.addSelect(scoreExpr, 'importance_score')
|
|
60
60
|
.setParameter('commentWeight', weights.commentWeight)
|
|
@@ -15,11 +15,15 @@ export declare class FriendRequestService extends TypeOrmCrudService<FriendReque
|
|
|
15
15
|
isFollowing: boolean;
|
|
16
16
|
}>;
|
|
17
17
|
acceptWithFollowEdge(requestId: string, acceptedByUserId: string): Promise<FriendRequest>;
|
|
18
|
+
acceptWithFollowEdgeByPair(fromUserId: string, acceptedByUserId: string): Promise<FriendRequest>;
|
|
18
19
|
accept(requestId: string, acceptedByUserId: string): Promise<FriendRequest>;
|
|
19
20
|
reject(requestId: string, rejectedByUserId: string): Promise<FriendRequest>;
|
|
21
|
+
rejectByPair(fromUserId: string, rejectedByUserId: string): Promise<FriendRequest>;
|
|
20
22
|
cancel(requestId: string, cancelledByUserId: string): Promise<void>;
|
|
21
23
|
getPendingReceived(userId: string): Promise<FriendRequest[]>;
|
|
22
24
|
getPendingSent(userId: string): Promise<FriendRequest[]>;
|
|
23
25
|
private ensureFriendship;
|
|
26
|
+
private ensureFriendshipWithEm;
|
|
27
|
+
private ensureFollowWithEm;
|
|
24
28
|
}
|
|
25
29
|
//# sourceMappingURL=friend-request.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"friend-request.service.d.ts","sourceRoot":"","sources":["../../src/services/friend-request.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAQ1D,OAAO,
|
|
1
|
+
{"version":3,"file":"friend-request.service.d.ts","sourceRoot":"","sources":["../../src/services/friend-request.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAQ1D,OAAO,EAAiB,UAAU,EAAE,MAAM,SAAS,CAAC;AAOpD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBACa,oBAAqB,SAAQ,kBAAkB,CAAC,aAAa,CAAC;aAGvD,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC;IAE/C,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAHd,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC,EAE9B,cAAc,EAAE,UAAU,CAAC,UAAU,CAAC,EACtC,aAAa,EAAE,aAAa;IASzC,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAoCrF,qBAAqB,CACzB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IAkB/E,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAoBzF,0BAA0B,CAC9B,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,aAAa,CAAC;IAiBnB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAe3E,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAc3E,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAclF,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnE,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAO5D,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;YAOhD,gBAAgB;YAIhB,sBAAsB;YAoBtB,kBAAkB;CAajC"}
|
|
@@ -18,6 +18,7 @@ const common_1 = require("@nestjs/common");
|
|
|
18
18
|
const typeorm_1 = require("@nestjs/typeorm");
|
|
19
19
|
const typeorm_2 = require("typeorm");
|
|
20
20
|
const social_network_constant_1 = require("../constants/social-network.constant");
|
|
21
|
+
const follow_entity_1 = require("../entities/follow.entity");
|
|
21
22
|
const friend_request_entity_1 = require("../entities/friend-request.entity");
|
|
22
23
|
const friendship_entity_1 = require("../entities/friendship.entity");
|
|
23
24
|
const follow_service_1 = require("./follow.service");
|
|
@@ -73,9 +74,36 @@ let FriendRequestService = class FriendRequestService extends crud_typeorm_1.Typ
|
|
|
73
74
|
};
|
|
74
75
|
}
|
|
75
76
|
async acceptWithFollowEdge(requestId, acceptedByUserId) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
return this.repo.manager.transaction(async (em) => {
|
|
78
|
+
const frRepo = em.getRepository(friend_request_entity_1.FriendRequest);
|
|
79
|
+
const request = await frRepo.findOne({ where: { id: requestId } });
|
|
80
|
+
if (!request)
|
|
81
|
+
throw new common_1.NotFoundException(`Friend request ${requestId} not found`);
|
|
82
|
+
if (request.toUserId !== acceptedByUserId) {
|
|
83
|
+
throw new common_1.BadRequestException('Only the recipient can accept this request');
|
|
84
|
+
}
|
|
85
|
+
if (request.status !== social_network_constant_1.FriendRequestStatus.PENDING) {
|
|
86
|
+
throw new common_1.BadRequestException('Request is no longer pending');
|
|
87
|
+
}
|
|
88
|
+
request.status = social_network_constant_1.FriendRequestStatus.ACCEPTED;
|
|
89
|
+
await frRepo.save(request);
|
|
90
|
+
await this.ensureFriendshipWithEm(em, request.fromUserId, request.toUserId);
|
|
91
|
+
await this.ensureFollowWithEm(em, request.fromUserId, request.toUserId);
|
|
92
|
+
return request;
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
async acceptWithFollowEdgeByPair(fromUserId, acceptedByUserId) {
|
|
96
|
+
const row = await this.repo.findOne({
|
|
97
|
+
where: {
|
|
98
|
+
fromUserId,
|
|
99
|
+
toUserId: acceptedByUserId,
|
|
100
|
+
status: social_network_constant_1.FriendRequestStatus.PENDING,
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
if (!row) {
|
|
104
|
+
throw new common_1.NotFoundException('No pending friend request for this pair');
|
|
105
|
+
}
|
|
106
|
+
return this.acceptWithFollowEdge(row.id, acceptedByUserId);
|
|
79
107
|
}
|
|
80
108
|
async accept(requestId, acceptedByUserId) {
|
|
81
109
|
const request = await this.repo.findOne({ where: { id: requestId } });
|
|
@@ -105,6 +133,19 @@ let FriendRequestService = class FriendRequestService extends crud_typeorm_1.Typ
|
|
|
105
133
|
request.status = social_network_constant_1.FriendRequestStatus.REJECTED;
|
|
106
134
|
return this.repo.save(request);
|
|
107
135
|
}
|
|
136
|
+
async rejectByPair(fromUserId, rejectedByUserId) {
|
|
137
|
+
const row = await this.repo.findOne({
|
|
138
|
+
where: {
|
|
139
|
+
fromUserId,
|
|
140
|
+
toUserId: rejectedByUserId,
|
|
141
|
+
status: social_network_constant_1.FriendRequestStatus.PENDING,
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
if (!row) {
|
|
145
|
+
throw new common_1.NotFoundException('No pending friend request for this pair');
|
|
146
|
+
}
|
|
147
|
+
return this.reject(row.id, rejectedByUserId);
|
|
148
|
+
}
|
|
108
149
|
async cancel(requestId, cancelledByUserId) {
|
|
109
150
|
const request = await this.repo.findOne({ where: { id: requestId } });
|
|
110
151
|
if (!request)
|
|
@@ -130,18 +171,31 @@ let FriendRequestService = class FriendRequestService extends crud_typeorm_1.Typ
|
|
|
130
171
|
});
|
|
131
172
|
}
|
|
132
173
|
async ensureFriendship(userIdA, userIdB) {
|
|
174
|
+
await this.ensureFriendshipWithEm(this.repo.manager, userIdA, userIdB);
|
|
175
|
+
}
|
|
176
|
+
async ensureFriendshipWithEm(em, userIdA, userIdB) {
|
|
177
|
+
const friendshipRepo = em.getRepository(friendship_entity_1.Friendship);
|
|
133
178
|
const [id1, id2] = userIdA < userIdB ? [userIdA, userIdB] : [userIdB, userIdA];
|
|
134
|
-
const existing = await
|
|
179
|
+
const existing = await friendshipRepo.findOne({
|
|
135
180
|
where: { userId: id1, friendUserId: id2 },
|
|
136
181
|
});
|
|
137
182
|
if (existing)
|
|
138
183
|
return;
|
|
139
|
-
|
|
184
|
+
await friendshipRepo.save(friendshipRepo.create({
|
|
140
185
|
userId: id1,
|
|
141
186
|
friendUserId: id2,
|
|
142
187
|
status: social_network_constant_1.FriendshipStatus.ACTIVE,
|
|
143
|
-
});
|
|
144
|
-
|
|
188
|
+
}));
|
|
189
|
+
}
|
|
190
|
+
async ensureFollowWithEm(em, followerId, followingId) {
|
|
191
|
+
if (followerId === followingId) {
|
|
192
|
+
throw new common_1.BadRequestException('Cannot follow yourself');
|
|
193
|
+
}
|
|
194
|
+
const followRepo = em.getRepository(follow_entity_1.Follow);
|
|
195
|
+
const existing = await followRepo.findOne({ where: { followerId, followingId } });
|
|
196
|
+
if (existing)
|
|
197
|
+
return;
|
|
198
|
+
await followRepo.save(followRepo.create({ followerId, followingId }));
|
|
145
199
|
}
|
|
146
200
|
};
|
|
147
201
|
exports.FriendRequestService = FriendRequestService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"friend-request.service.js","sourceRoot":"","sources":["../../src/services/friend-request.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uDAA0D;AAC1D,2CAKwB;AACxB,6CAAmD;AACnD,
|
|
1
|
+
{"version":3,"file":"friend-request.service.js","sourceRoot":"","sources":["../../src/services/friend-request.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED