feat: completed addition of new data field in UserCollections

This commit is contained in:
Balu Babu
2023-12-01 16:22:22 +05:30
parent f13d00465d
commit e712d1e3ae
6 changed files with 83 additions and 15 deletions

View File

@@ -12,6 +12,7 @@ import {
USER_NOT_FOUND,
USER_NOT_OWNER,
USER_COLL_INVALID_JSON,
USER_COLL_DATA_INVALID,
} from 'src/errors';
import { PrismaService } from 'src/prisma/prisma.service';
import { AuthUser } from 'src/types/AuthUser';
@@ -45,6 +46,7 @@ export class UserCollectionService {
return <UserCollectionModel>{
...collection,
userID: collection.userUid,
data: !collection.data ? null : JSON.stringify(collection.data),
};
}
@@ -146,7 +148,7 @@ export class UserCollectionService {
},
});
return parent;
return !parent ? null : this.cast(parent);
}
/**
@@ -164,7 +166,7 @@ export class UserCollectionService {
take: number,
type: ReqType,
) {
return this.prisma.userCollection.findMany({
const res = await this.prisma.userCollection.findMany({
where: {
parentID: collectionID,
type: type,
@@ -176,6 +178,12 @@ export class UserCollectionService {
skip: cursor ? 1 : 0,
cursor: cursor ? { id: cursor } : undefined,
});
const childCollections = res.map((childCollection) =>
this.cast(childCollection),
);
return childCollections;
}
/**
@@ -211,12 +219,17 @@ export class UserCollectionService {
async createUserCollection(
user: AuthUser,
title: string,
data: string,
parentUserCollectionID: string | null,
type: ReqType,
) {
const isTitleValid = isValidLength(title, this.TITLE_LENGTH);
if (!isTitleValid) return E.left(USER_COLL_SHORT_TITLE);
console.log(data);
const collectionData = stringToJson(data);
if (E.isLeft(collectionData)) return E.left(USER_COLL_DATA_INVALID);
// If creating a child collection
if (parentUserCollectionID !== null) {
const parentCollection = await this.getUserCollection(
@@ -251,15 +264,19 @@ export class UserCollectionService {
},
},
parent: isParent,
data: collectionData.right,
orderIndex: !parentUserCollectionID
? (await this.getRootCollectionsCount(user.uid)) + 1
: (await this.getChildCollectionsCount(parentUserCollectionID)) + 1,
},
});
await this.pubsub.publish(`user_coll/${user.uid}/created`, userCollection);
await this.pubsub.publish(
`user_coll/${user.uid}/created`,
this.cast(userCollection),
);
return E.right(userCollection);
return E.right(this.cast(userCollection));
}
/**
@@ -276,7 +293,7 @@ export class UserCollectionService {
take: number,
type: ReqType,
) {
return this.prisma.userCollection.findMany({
const res = await this.prisma.userCollection.findMany({
where: {
userUid: user.uid,
parentID: null,
@@ -289,6 +306,12 @@ export class UserCollectionService {
skip: cursor ? 1 : 0,
cursor: cursor ? { id: cursor } : undefined,
});
const userCollections = res.map((childCollection) =>
this.cast(childCollection),
);
return userCollections;
}
/**
@@ -307,7 +330,7 @@ export class UserCollectionService {
take: number,
type: ReqType,
) {
return this.prisma.userCollection.findMany({
const res = await this.prisma.userCollection.findMany({
where: {
userUid: user.uid,
parentID: userCollectionID,
@@ -317,9 +340,16 @@ export class UserCollectionService {
skip: cursor ? 1 : 0,
cursor: cursor ? { id: cursor } : undefined,
});
const childCollections = res.map((childCollection) =>
this.cast(childCollection),
);
return childCollections;
}
/**
* @deprecated Use updateUserCollection method instead
* Update the title of a UserCollection
*
* @param newTitle The new title of collection
@@ -351,10 +381,10 @@ export class UserCollectionService {
this.pubsub.publish(
`user_coll/${updatedUserCollection.userUid}/updated`,
updatedUserCollection,
this.cast(updatedUserCollection),
);
return E.right(updatedUserCollection);
return E.right(this.cast(updatedUserCollection));
} catch (error) {
return E.left(USER_COLL_NOT_FOUND);
}
@@ -591,10 +621,10 @@ export class UserCollectionService {
this.pubsub.publish(
`user_coll/${collection.right.userUid}/moved`,
updatedCollection.right,
this.cast(updatedCollection.right),
);
return E.right(updatedCollection.right);
return E.right(this.cast(updatedCollection.right));
}
// destCollectionID != null i.e move into another collection
@@ -642,10 +672,10 @@ export class UserCollectionService {
this.pubsub.publish(
`user_coll/${collection.right.userUid}/moved`,
updatedCollection.right,
this.cast(updatedCollection.right),
);
return E.right(updatedCollection.right);
return E.right(this.cast(updatedCollection.right));
}
/**
@@ -846,6 +876,7 @@ export class UserCollectionService {
...(x.request as Record<string, unknown>), // type casting x.request of type Prisma.JSONValue to an object to enable spread
};
}),
data: JSON.stringify(collection.right.data),
};
return E.right(result);
@@ -918,6 +949,7 @@ export class UserCollectionService {
...(x.request as Record<string, unknown>), // type casting x.request of type Prisma.JSONValue to an object to enable spread
};
}),
data: JSON.stringify(parentCollection.right.data),
}),
collectionType: parentCollection.right.type,
});
@@ -971,6 +1003,7 @@ export class UserCollectionService {
this.generatePrismaQueryObj(f, userID, index + 1, reqType),
),
},
data: folder.data ?? undefined,
};
}
@@ -1041,7 +1074,7 @@ export class UserCollectionService {
);
userCollections.forEach((x) =>
this.pubsub.publish(`user_coll/${userID}/created`, x),
this.pubsub.publish(`user_coll/${userID}/created`, this.cast(x)),
);
return E.right(true);