diff --git a/apps/server/src/services/PostApiService/index.mts b/apps/server/src/services/PostApiService/index.mts index dd2063d9..51cc3e91 100644 --- a/apps/server/src/services/PostApiService/index.mts +++ b/apps/server/src/services/PostApiService/index.mts @@ -379,9 +379,12 @@ export class PostApiService implements Service { return false } private async handleTags(tags: string[], postId: string): Promise { - const tagsData = await Promise.all(tags.map((tag) => this.tagService.findOrCreate(tag))) - await this.postTagService.syncPostTags(postId, tagsData) - return tagsData + const tagsData = await Promise.all( + tags.map((tag) => this.tagService.findOrCreate(tag.trim().slice(0, 255))), + ) + const validTags = tagsData.filter((tag): tag is Tag => !!tag) + await this.postTagService.syncPostTags(postId, validTags) + return validTags } private async isPostLimitReached(signedUserId: string): Promise { const recentPostCount = await this.db.post.count({ diff --git a/apps/server/src/services/TagService/index.ts b/apps/server/src/services/TagService/index.ts index 6114e67c..cb3b6300 100644 --- a/apps/server/src/services/TagService/index.ts +++ b/apps/server/src/services/TagService/index.ts @@ -14,7 +14,7 @@ interface Service { tagLoader(): DataLoader getOriginTag(tagname: string): Promise getUserTags(username: string, signedUserId?: string): Promise - findOrCreate(name: string): Promise + findOrCreate(name: string): Promise } @injectable() @@ -73,9 +73,11 @@ export class TagService implements Service { ], }) return this.utils - .groupById< - Prisma.PostTagGetPayload<{ include: { tag: true } }> - >(postIds as string[], postsTags, (pt) => pt.fk_post_id!) + .groupById>( + postIds as string[], + postsTags, + (pt) => pt.fk_post_id!, + ) .map((array) => array.map((pt) => pt.tag!)) }) } @@ -157,7 +159,7 @@ export class TagService implements Service { return rawData.map((data) => ({ ...data, posts_count: Number(data.posts_count) })) } - public async findOrCreate(name: string): Promise { + public async findOrCreate(name: string): Promise { const tag = await this.findByName(name) if (tag) return tag @@ -179,7 +181,7 @@ export class TagService implements Service { name: name, }, }) - return tag! + return tag } } }