| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import type Database from 'better-sqlite3'
- export function initDb(db: Database.Database) {
- db.exec(`
- CREATE TABLE IF NOT EXISTS watched_addresses (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- address TEXT NOT NULL UNIQUE,
- label TEXT,
- enabled INTEGER NOT NULL DEFAULT 1,
- copy_multiplier REAL,
- copy_max_usd REAL,
- created_at TEXT NOT NULL DEFAULT (datetime('now'))
- );
- CREATE TABLE IF NOT EXISTS position_mappings (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- target_address TEXT NOT NULL,
- target_nft_mint TEXT NOT NULL,
- target_personal_position TEXT,
- our_nft_mint TEXT,
- pool_id TEXT NOT NULL,
- tick_lower INTEGER NOT NULL,
- tick_upper INTEGER NOT NULL,
- status TEXT NOT NULL DEFAULT 'active',
- created_at TEXT NOT NULL DEFAULT (datetime('now')),
- updated_at TEXT NOT NULL DEFAULT (datetime('now')),
- UNIQUE(target_nft_mint)
- );
- CREATE TABLE IF NOT EXISTS copy_history (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- target_address TEXT NOT NULL,
- target_tx_sig TEXT NOT NULL,
- operation TEXT NOT NULL,
- target_nft_mint TEXT,
- our_nft_mint TEXT,
- our_tx_sig TEXT,
- pool_id TEXT,
- target_amount_a TEXT,
- target_amount_b TEXT,
- our_amount_a TEXT,
- our_amount_b TEXT,
- status TEXT NOT NULL DEFAULT 'pending',
- error_message TEXT,
- swap_tx_sig TEXT,
- created_at TEXT NOT NULL DEFAULT (datetime('now'))
- );
- CREATE TABLE IF NOT EXISTS settings (
- key TEXT PRIMARY KEY,
- value TEXT NOT NULL,
- updated_at TEXT NOT NULL DEFAULT (datetime('now'))
- );
- `)
- // Migration: add columns if they don't exist (for existing DBs)
- const cols = db.pragma('table_info(watched_addresses)') as { name: string }[]
- const colNames = new Set(cols.map((c) => c.name))
- if (!colNames.has('copy_multiplier')) {
- db.exec('ALTER TABLE watched_addresses ADD COLUMN copy_multiplier REAL')
- }
- if (!colNames.has('copy_max_usd')) {
- db.exec('ALTER TABLE watched_addresses ADD COLUMN copy_max_usd REAL')
- }
- if (!colNames.has('referrer_mode')) {
- db.exec("ALTER TABLE watched_addresses ADD COLUMN referrer_mode TEXT NOT NULL DEFAULT 'self'")
- }
- }
|