44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import { eq } from "drizzle-orm";
|
|
import { db } from "@/lib/db";
|
|
import { DEFAULT_ASSISTANT_NAME } from "@/lib/assistant-config";
|
|
import { users } from "@/modules/_core/schema";
|
|
|
|
export {
|
|
DEFAULT_ASSISTANT_NAME,
|
|
MAX_ASSISTANT_NAME_LENGTH,
|
|
MAX_ASSISTANT_SYSTEM_PROMPT_LENGTH,
|
|
resolveAssistantSystemPrompt,
|
|
} from "@/lib/assistant-config";
|
|
|
|
export type AssistantPreferences = {
|
|
enabled: boolean;
|
|
name: string;
|
|
systemPrompt: string | null;
|
|
model: string | null;
|
|
};
|
|
|
|
export async function getAssistantPreferences(userId: string): Promise<AssistantPreferences> {
|
|
const [row] = await db
|
|
.select({
|
|
assistantEnabled: users.assistantEnabled,
|
|
assistantName: users.assistantName,
|
|
assistantSystemPrompt: users.assistantSystemPrompt,
|
|
assistantModel: users.assistantModel,
|
|
})
|
|
.from(users)
|
|
.where(eq(users.id, userId))
|
|
.limit(1);
|
|
|
|
return {
|
|
enabled: row?.assistantEnabled ?? false,
|
|
name: row?.assistantName?.trim() || DEFAULT_ASSISTANT_NAME,
|
|
systemPrompt: row?.assistantSystemPrompt ?? null,
|
|
model: row?.assistantModel?.trim() || null,
|
|
};
|
|
}
|
|
|
|
export async function getAssistantEnabled(userId: string): Promise<boolean> {
|
|
const prefs = await getAssistantPreferences(userId);
|
|
return prefs.enabled;
|
|
}
|