package db import ( "database/sql" _ "modernc.org/sqlite" // à la place de go-sqlite3 ) type DB struct { *sql.DB } func Init(path string) (*DB, error) { sqldb, err := sql.Open("sqlite", path) // "sqlite" au lieu de "sqlite3" if err != nil { return nil, err } if err := sqldb.Ping(); err != nil { return nil, err } database := &DB{sqldb} if err := database.migrate(); err != nil { return nil, err } return database, nil } func (db *DB) migrate() error { queries := []string{ `CREATE TABLE IF NOT EXISTS settings ( key TEXT PRIMARY KEY, value TEXT NOT NULL, encrypted INTEGER DEFAULT 0, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP )`, `CREATE TABLE IF NOT EXISTS watchlist ( id INTEGER PRIMARY KEY AUTOINCREMENT, ticker TEXT NOT NULL UNIQUE, name TEXT, sector TEXT, exchange TEXT, active INTEGER DEFAULT 1, created_at DATETIME DEFAULT CURRENT_TIMESTAMP )`, `CREATE TABLE IF NOT EXISTS instruments ( instrument_id INTEGER PRIMARY KEY, ticker TEXT NOT NULL, name TEXT, sector_id INTEGER, exchange_id INTEGER, asset_class_id INTEGER, synced_at DATETIME DEFAULT CURRENT_TIMESTAMP )`, `CREATE TABLE IF NOT EXISTS news ( id INTEGER PRIMARY KEY AUTOINCREMENT, ticker TEXT, headline TEXT NOT NULL, source TEXT, url TEXT, sentiment TEXT, published_at DATETIME, created_at DATETIME DEFAULT CURRENT_TIMESTAMP )`, } for _, q := range queries { if _, err := db.Exec(q); err != nil { return err } } return nil }