chore: update connection store

This commit is contained in:
Steven
2023-03-23 00:10:50 +08:00
parent fcd5d544ba
commit bad550bdea
3 changed files with 52 additions and 11 deletions

View File

@ -3,11 +3,15 @@ import { persist } from "zustand/middleware";
import { Chat, UNKNOWN_ID, User } from "@/types";
import { generateUUID } from "@/utils";
export const defaultChat: Chat = {
id: generateUUID(),
connectionId: UNKNOWN_ID,
databaseName: "",
assistantId: "sql-assistant",
const getDefaultChat = (): Chat => {
return {
id: generateUUID(),
connectionId: UNKNOWN_ID,
databaseName: "",
assistantId: "sql-assistant",
title: "default chat",
createdAt: Date.now(),
};
};
interface ChatState {
@ -20,13 +24,11 @@ interface ChatState {
export const useChatStore = create<ChatState>()(
persist(
(set) => ({
chatList: [defaultChat],
currentChat: defaultChat,
chatList: [getDefaultChat()],
currentChat: getDefaultChat(),
createChat: (assistant: User) => {
const chat: Chat = {
id: generateUUID(),
connectionId: UNKNOWN_ID,
databaseName: "",
...getDefaultChat(),
assistantId: assistant.id,
};
set((state) => ({

37
store/connection.ts Normal file
View File

@ -0,0 +1,37 @@
import { create } from "zustand";
import { persist } from "zustand/middleware";
import { Connection, Database } from "@/types";
interface ConnectionContext {
connection: Connection;
database: Database;
}
interface ConnectionState {
connectionList: Connection[];
databaseList: Database[];
currentConnectionCtx?: ConnectionContext;
createConnection: (connection: Connection) => void;
setCurrentConnectionCtx: (connectionCtx: ConnectionContext) => void;
}
export const useConnectionStore = create<ConnectionState>()(
persist(
(set) => ({
connectionList: [],
databaseList: [],
createConnection: (connection: Connection) => {
set((state) => ({
connectionList: [...state.connectionList, connection],
}));
},
setCurrentConnectionCtx: (connectionCtx: ConnectionContext) =>
set(() => ({
currentConnectionCtx: connectionCtx,
})),
}),
{
name: "connection-storage",
}
)
);

View File

@ -1,8 +1,10 @@
import { Id } from "./";
import { Id, Timestamp } from "./";
export interface Chat {
id: string;
connectionId: Id;
databaseName: string;
assistantId: Id;
title: string;
createdAt: Timestamp;
}