🔖 feat: Conversation Bookmarks (#3344)

* feat: add tags property in Conversation model

* feat: add ConversationTag model

* feat: add the tags parameter to getConvosByPage

* feat: add API route to ConversationTag

* feat: add types of ConversationTag

* feat: add data access functions for conversation tags

* feat: add Bookmark table component

* feat: Add an action to bookmark

* feat: add Bookmark nav component

* fix: failed test

* refactor: made 'Saved' tag a constant

* feat: add new bookmark to current conversation

* chore: Add comment

* fix: delete tag from conversations when it's deleted

* fix: Update the query cache when the tag title is changed.

* chore: fix typo

* refactor: add description of rebuilding bookmarks

* chore: remove unused variables

* fix: position when adding a new bookmark

* refactor: add comment, rename a function

* refactor: add a unique constraint in ConversationTag

* chore: add localizations
This commit is contained in:
Yuichi Oneda 2024-07-29 07:45:59 -07:00 committed by GitHub
parent d4d56281e3
commit e565e0faab
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
65 changed files with 3751 additions and 36 deletions

View file

@ -371,6 +371,7 @@ export const tConversationSchema = z.object({
updatedAt: z.string(),
modelLabel: z.string().nullable().optional(),
examples: z.array(tExampleSchema).optional(),
tags: z.array(z.string()).optional(),
/* Prefer modelLabel over chatGptLabel */
chatGptLabel: z.string().nullable().optional(),
userLabel: z.string().optional(),
@ -476,6 +477,17 @@ export const tSharedLinkSchema = z.object({
});
export type TSharedLink = z.infer<typeof tSharedLinkSchema>;
export const tConversationTagSchema = z.object({
user: z.string(),
tag: z.string(),
description: z.string().optional(),
createdAt: z.string(),
updatedAt: z.string(),
count: z.number(),
position: z.number(),
});
export type TConversationTag = z.infer<typeof tConversationTagSchema>;
export const openAISchema = tConversationSchema
.pick({
model: true,