first up
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user