* 完全更新 PublicBookmarkToTag 表,使与 bId 关联关联的 tId 全是 tagIds 中的 id
(bId: BookmarkId, tagIds?: TagId[])
| 26 | * 完全更新 PublicBookmarkToTag 表,使与 bId 关联关联的 tId 全是 tagIds 中的 id |
| 27 | */ |
| 28 | async function fullSetBookmarkToTag(bId: BookmarkId, tagIds?: TagId[]) { |
| 29 | if (!tagIds?.length) return |
| 30 | const userId = await getAuthedUserId() |
| 31 | tagIds = await UserTagController.filterUserTagIds(userId, tagIds) |
| 32 | const task = [ |
| 33 | tagIds.length && |
| 34 | db |
| 35 | .insert(userBookmarkToTag) |
| 36 | .values(tagIds.map((tId) => ({ bId: bId, tId }))) |
| 37 | .onConflictDoNothing(), |
| 38 | db |
| 39 | .delete(userBookmarkToTag) |
| 40 | .where(and(eq(userBookmarkToTag.bId, bId), notInArray(userBookmarkToTag.tId, tagIds))), |
| 41 | ] |
| 42 | await Promise.all(task) |
| 43 | } |
| 44 | |
| 45 | function userLimiter(userId: UserId, bookmarkId?: BookmarkId) { |
| 46 | if (!bookmarkId) return eq(userBookmarks.userId, userId) |
no test coverage detected