Skip to content

Commit

Permalink
MYR-912, MYR-913, MYR-915: fixed prettier
Browse files Browse the repository at this point in the history
  • Loading branch information
abdulhakim2902 authored and irmannmal committed Sep 30, 2021
1 parent 93c0e7d commit cf0860e
Show file tree
Hide file tree
Showing 5 changed files with 142 additions and 71 deletions.
44 changes: 34 additions & 10 deletions src/interceptors/pagination.interceptor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,12 @@ import {
} from '@loopback/core';
import {Where} from '@loopback/repository';
import {HttpErrors, RestBindings} from '@loopback/rest';
import {ControllerType, MethodType, TimelineType, VisibilityType} from '../enums';
import {
ControllerType,
MethodType,
TimelineType,
VisibilityType,
} from '../enums';
import {Post} from '../models';
import {
ExperienceService,
Expand Down Expand Up @@ -56,7 +61,10 @@ export class PaginationInterceptor implements Provider<Interceptor> {
* @param invocationCtx - Invocation context
* @param next - A function to invoke next interceptor or the target method
*/
async intercept(invocationCtx: InvocationContext, next: () => ValueOrPromise<InvocationResult>) {
async intercept(
invocationCtx: InvocationContext,
next: () => ValueOrPromise<InvocationResult>,
) {
const {query} = await invocationCtx.get(RestBindings.Http.REQUEST);
const {pageNumber, pageLimit, userId, timelineType} = query;
const methodName = invocationCtx.methodName as MethodType;
Expand All @@ -70,9 +78,13 @@ export class PaginationInterceptor implements Provider<Interceptor> {
);

if (timelineType) {
if (!userId) throw new HttpErrors.UnprocessableEntity('UserId must be filled');
if (!userId)
throw new HttpErrors.UnprocessableEntity('UserId must be filled');

const where = await this.getTimeline(userId as string, timelineType as TimelineType);
const where = await this.getTimeline(
userId as string,
timelineType as TimelineType,
);

if (where) filter.where = where;
else
Expand All @@ -86,8 +98,10 @@ export class PaginationInterceptor implements Provider<Interceptor> {
let pageIndex = 1;
let pageSize = 5;

if (!isNaN(Number(pageNumber)) || Number(pageNumber) > 0) pageIndex = Number(pageNumber);
if (!isNaN(Number(pageLimit)) || Number(pageLimit) > 0) pageSize = Number(pageLimit);
if (!isNaN(Number(pageNumber)) || Number(pageNumber) > 0)
pageIndex = Number(pageNumber);
if (!isNaN(Number(pageLimit)) || Number(pageLimit) > 0)
pageSize = Number(pageLimit);

invocationCtx.args[0] = Object.assign(filter, {
limit: pageSize,
Expand All @@ -98,7 +112,10 @@ export class PaginationInterceptor implements Provider<Interceptor> {
const result = await next();
const {count} = await this.metricService.countData(className, where);

if (className === ControllerType.NOTIFICATION && methodName === MethodType.FIND) {
if (
className === ControllerType.NOTIFICATION &&
methodName === MethodType.FIND
) {
const notificationFilter = invocationCtx.args[0];
const toUser = notificationFilter.where
? notificationFilter.where.to
Expand All @@ -115,7 +132,10 @@ export class PaginationInterceptor implements Provider<Interceptor> {
};
}

async getTimeline(userId: string, timelineType: TimelineType): Promise<Where<Post> | undefined> {
async getTimeline(
userId: string,
timelineType: TimelineType,
): Promise<Where<Post> | undefined> {
switch (timelineType) {
case TimelineType.EXPERIENCE:
return this.experienceService.experienceTimeline(userId);
Expand All @@ -127,12 +147,16 @@ export class PaginationInterceptor implements Provider<Interceptor> {
return this.friendService.friendsTimeline(userId);

case TimelineType.ALL: {
const approvedFriendIds = await this.friendService.getApprovedFriendIds(userId);
const approvedFriendIds = await this.friendService.getApprovedFriendIds(
userId,
);
const trendingTopics = await this.tagService.trendingTopics();

const experience = await this.experienceService.getExperience(userId);
const experienceTopics = experience ? experience.tags : [];
const experiencePersonIds = experience ? experience.people.map(e => e.id) : [];
const experiencePersonIds = experience
? experience.people.map(e => e.id)
: [];

const friends = [...approvedFriendIds, userId];
const topics = [...trendingTopics, ...experienceTopics];
Expand Down
125 changes: 73 additions & 52 deletions src/migrations/1.0.0.migration.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
import {repository} from '@loopback/repository';
import {MigrationScript, migrationScript} from 'loopback4-migration';
import {config} from '../config';
import {DefaultCurrencyType, PlatformType, ReferenceType, VisibilityType} from '../enums';
import {
DefaultCurrencyType,
PlatformType,
ReferenceType,
VisibilityType,
} from '../enums';
import {
Conversation,
DetailTransaction,
Expand Down Expand Up @@ -133,9 +138,9 @@ export class MigrationScript100 implements MigrationScript {
}

async doMigrateCurrencies(): Promise<void> {
const collection = (this.tokenRepository.dataSource.connector as any).collection(
Token.modelName,
);
const collection = (
this.tokenRepository.dataSource.connector as any
).collection(Token.modelName);

const tokens = await collection.aggregate().get();

Expand Down Expand Up @@ -187,7 +192,9 @@ export class MigrationScript100 implements MigrationScript {

async doMigratePosts(): Promise<void> {
const {getKeyring, getHexPublicKey} = new PolkadotJs();
const collection = (this.postRepository.dataSource.connector as any).collection(Post.modelName);
const collection = (
this.postRepository.dataSource.connector as any
).collection(Post.modelName);

// Renamed and removed field
await collection.updateMany(
Expand Down Expand Up @@ -279,8 +286,12 @@ export class MigrationScript100 implements MigrationScript {
/[.]jpg$|[.]jpeg$|[.]png$|[.]gif$|[.]tiff$|^https:\/\/preview.redd.it\//;
const videoFormat = /[.]mp4$|[.]mp4?source=fallback$/;

const images = post.assets.filter((asset: string) => asset.match(imageFormat));
const videos = post.assets.filter((asset: string) => asset.match(videoFormat));
const images = post.assets.filter((asset: string) =>
asset.match(imageFormat),
);
const videos = post.assets.filter((asset: string) =>
asset.match(videoFormat),
);

return collection.updateOne(
{_id: post._id},
Expand All @@ -302,9 +313,9 @@ export class MigrationScript100 implements MigrationScript {
}

async doMigrateUserCurrencies(): Promise<void> {
const collection = (this.userTokenRepository.dataSource.connector as any).collection(
UserToken.modelName,
);
const collection = (
this.userTokenRepository.dataSource.connector as any
).collection(UserToken.modelName);

const userTokens = await collection.aggregate().get();

Expand Down Expand Up @@ -332,9 +343,9 @@ export class MigrationScript100 implements MigrationScript {
}

async doMigrateTransactions(): Promise<void> {
const collection = (this.transactionRepository.dataSource.connector as any).collection(
Transaction.modelName,
);
const collection = (
this.transactionRepository.dataSource.connector as any
).collection(Transaction.modelName);

await collection.updateMany(
{},
Expand Down Expand Up @@ -379,9 +390,9 @@ export class MigrationScript100 implements MigrationScript {
}

async doMigratePeople(): Promise<void> {
const collections = (this.peopleRepository.dataSource.connector as any).collection(
People.modelName,
);
const collections = (
this.peopleRepository.dataSource.connector as any
).collection(People.modelName);

await collections.updateMany(
{},
Expand All @@ -404,9 +415,9 @@ export class MigrationScript100 implements MigrationScript {
}

async doMigrateNotifications(): Promise<void> {
const collections = (this.notificationRepository.dataSource.connector as any).collection(
Notification.modelName,
);
const collections = (
this.notificationRepository.dataSource.connector as any
).collection(Notification.modelName);

await collections.updateMany(
{},
Expand All @@ -419,9 +430,9 @@ export class MigrationScript100 implements MigrationScript {
}

async doMigrateFriends(): Promise<void> {
const collection = (this.friendRepository.dataSource.connector as any).collection(
Friend.modelName,
);
const collection = (
this.friendRepository.dataSource.connector as any
).collection(Friend.modelName);

await collection.updateMany(
{},
Expand All @@ -440,9 +451,9 @@ export class MigrationScript100 implements MigrationScript {
}

async doMigrateUserSocialMedias(): Promise<void> {
const collection = (this.userCredentialRepository.dataSource.connector as any).collection(
UserCredential.modelName,
);
const collection = (
this.userCredentialRepository.dataSource.connector as any
).collection(UserCredential.modelName);

await collection.updateMany(
{},
Expand All @@ -457,13 +468,15 @@ export class MigrationScript100 implements MigrationScript {
},
);

const newUserSocialMedias = (await collection.aggregate().get()).map((userSocialMedia: any) => {
if (userSocialMedia._id) {
delete userSocialMedia._id;
}
const newUserSocialMedias = (await collection.aggregate().get()).map(
(userSocialMedia: any) => {
if (userSocialMedia._id) {
delete userSocialMedia._id;
}

return userSocialMedia;
});
return userSocialMedia;
},
);

await this.userSocialMediaRepository.createAll(newUserSocialMedias);

Expand All @@ -475,7 +488,9 @@ export class MigrationScript100 implements MigrationScript {
}

async doMigrateLikes(): Promise<void> {
const collection = (this.likeRepository.dataSource.connector as any).collection(Like.modelName);
const collection = (
this.likeRepository.dataSource.connector as any
).collection(Like.modelName);

await collection.deleteMany({status: false});
await collection.updateMany(
Expand All @@ -500,7 +515,9 @@ export class MigrationScript100 implements MigrationScript {
}

async doMigrateVotes(): Promise<void> {
const collection = (this.likeRepository.dataSource.connector as any).collection(Like.modelName);
const collection = (
this.likeRepository.dataSource.connector as any
).collection(Like.modelName);
const likes = await collection.aggregate().get();

await Promise.all(
Expand All @@ -518,9 +535,9 @@ export class MigrationScript100 implements MigrationScript {
}

async dropPublicMetrics() {
const collection = (this.publicMetricRepository.dataSource.connector as any).collection(
PublicMetric.modelName,
);
const collection = (
this.publicMetricRepository.dataSource.connector as any
).collection(PublicMetric.modelName);

const publicMetrics = await collection
.aggregate([
Expand Down Expand Up @@ -569,9 +586,9 @@ export class MigrationScript100 implements MigrationScript {
}

async dropConversations() {
const collection = (this.conversationRepository.dataSource.connector as any).collection(
Conversation.modelName,
);
const collection = (
this.conversationRepository.dataSource.connector as any
).collection(Conversation.modelName);

try {
await collection.drop();
Expand All @@ -581,9 +598,9 @@ export class MigrationScript100 implements MigrationScript {
}

async dropDetailTransactions() {
const collection = (this.detailTransactionRepository.dataSource.connector as any).collection(
DetailTransaction.modelName,
);
const collection = (
this.detailTransactionRepository.dataSource.connector as any
).collection(DetailTransaction.modelName);

try {
await collection.drop();
Expand All @@ -593,7 +610,9 @@ export class MigrationScript100 implements MigrationScript {
}

async dropTips() {
const collection = (this.tipRepository.dataSource.connector as any).collection(Tip.modelName);
const collection = (
this.tipRepository.dataSource.connector as any
).collection(Tip.modelName);

try {
await collection.drop();
Expand All @@ -619,9 +638,9 @@ export class MigrationScript100 implements MigrationScript {
}

async addDislikesToLikeCollection(): Promise<void> {
const collection = (this.dislikeRepository.dataSource.connector as any).collection(
Dislike.modelName,
);
const collection = (
this.dislikeRepository.dataSource.connector as any
).collection(Dislike.modelName);

await collection.deleteMany({status: false});
await collection.updateMany(
Expand All @@ -642,13 +661,15 @@ export class MigrationScript100 implements MigrationScript {
},
);

const dislikes = (await collection.aggregate().get()).map((dislike: any) => {
if (dislike._id) {
delete dislike._id;
}
const dislikes = (await collection.aggregate().get()).map(
(dislike: any) => {
if (dislike._id) {
delete dislike._id;
}

return dislike;
});
return dislike;
},
);

await this.likeRepository.createAll(dislikes);

Expand Down
8 changes: 7 additions & 1 deletion src/models/post.model.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
import {belongsTo, Entity, hasMany, model, property} from '@loopback/repository';
import {
belongsTo,
Entity,
hasMany,
model,
property,
} from '@loopback/repository';
import {PlatformType, VisibilityType} from '../enums';
import {Metric} from '../interfaces';
import {Asset} from '../interfaces/asset.interface';
Expand Down
10 changes: 8 additions & 2 deletions src/services/experience.service.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
import {repository, Where} from '@loopback/repository';
import {VisibilityType} from '../enums';
import {Experience, Post} from '../models';
import {ExperienceRepository, UserExperienceRepository, UserRepository} from '../repositories';
import {
ExperienceRepository,
UserExperienceRepository,
UserRepository,
} from '../repositories';

export class ExperienceService {
constructor(
Expand All @@ -24,7 +28,9 @@ export class ExperienceService {
if (!user) return null;
if (!user.experiences) return null;

const experience = user.experiences.find(e => e.id === user.onTimeline?.toString());
const experience = user.experiences.find(
e => e.id === user.onTimeline?.toString(),
);

if (!experience) return null;

Expand Down
Loading

0 comments on commit cf0860e

Please sign in to comment.