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