feat: add stock database with prisma for portfolio persistence

- Initialize Prisma with SQLite and Stock model
- Create database service layer with singleton client
- Add API routes for stock CRUD operations
- Integrate database with analyze page to persist ticker entries
- Add Playwright tests for stock database functionality
This commit is contained in:
2026-05-14 10:23:56 +02:00
parent f40eec1420
commit 3340fd11ca
29 changed files with 2530 additions and 221 deletions
+11 -10
View File
@@ -9,20 +9,21 @@ type OpenRouterConfig = {
};
export class OpenRouterClient {
private apiKey: string;
private baseURL: string;
private defaultModel: string;
private freeModels = [
"google/gemini-2.0-flash-exp:free",
"deepseek/deepseek-chat:free",
"meta/llama-3.3-70b-instruct:free",
];
private providers = ["openai", "google", "anthropic", "deepseek", "meta", "xai"];
private apiKey: string;
private baseURL: string;
private defaultModel: string;
private freeModels = [
"openai/gpt-oss-120b:free",
"openrouter/free",
"deepseek/deepseek-chat:free",
"meta/llama-3.3-70b-instruct:free",
];
private providers = ["openai", "google", "anthropic", "deepseek", "meta", "xai"];
constructor(apiKey: string, config?: OpenRouterConfig) {
this.apiKey = apiKey;
this.baseURL = config?.baseURL ?? "https://openrouter.ai/api/v1";
this.defaultModel = config?.defaultModel ?? "google/gemini-2.0-flash-exp:free";
this.defaultModel = config?.defaultModel ?? "openai/gpt-oss-120b:free";
}
getFreeModels(): string[] {