Move 150+ scripts from root and scripts/ into client/project directories: - clients/dataforth/scripts/ (110 files: AD2, sync, SSH, DB, DOS scripts) - clients/bg-builders/scripts/ (14 files: Lesley mgmt, Exchange, termination) - clients/internal-infrastructure/scripts/ (10 files: GDAP, Gitea, backups) - projects/msp-tools/scripts/ (9 files: CIPP, MSP onboarding, Datto) - projects/gururmm-agent/scripts/ (3 files: API test, JWT, record counts) - clients/glaztech/scripts/ (1 file: CentraStage removal) Also reorganized: - VPN scripts → infrastructure/vpn-configs/ - Retrieved API/JS files → api/ - Forum posts → projects/community-forum/forum-posts/ - SSH docs → clients/internal-infrastructure/docs/ - NWTOC/CTONW docs → projects/wrightstown-smarthome/docs/ - ACG website files → projects/internal/acg-website-2025/ - Dataforth docs → clients/dataforth/docs/ - schema-retrieved.sql → docs/database/ Deleted 24 tmp_*.ps1 one-off debug scripts (preserved in git history). Root reduced from 220+ files to 62 items (docs + directories only). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
54 lines
2.4 KiB
SQL
54 lines
2.4 KiB
SQL
-- Test Data Database Schema
|
|
-- SQLite database for storing and searching test records
|
|
|
|
-- Main test records table
|
|
CREATE TABLE IF NOT EXISTS test_records (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
log_type TEXT NOT NULL, -- DSCLOG, 5BLOG, 7BLOG, 8BLOG, PWRLOG, SCTLOG, VASLOG, SHT
|
|
model_number TEXT NOT NULL, -- DSCA38-1793, SCM5B30-01, etc.
|
|
serial_number TEXT NOT NULL, -- 176923-1, 105840-2, etc.
|
|
test_date TEXT NOT NULL, -- Test date (YYYY-MM-DD format)
|
|
test_station TEXT, -- TS-1L, TS-3R, etc.
|
|
overall_result TEXT, -- PASS/FAIL
|
|
raw_data TEXT, -- Full original record
|
|
source_file TEXT, -- Original file path
|
|
import_date TEXT DEFAULT (datetime('now')),
|
|
UNIQUE(log_type, model_number, serial_number, test_date, test_station)
|
|
);
|
|
|
|
-- Indexes for fast searching
|
|
CREATE INDEX IF NOT EXISTS idx_serial ON test_records(serial_number);
|
|
CREATE INDEX IF NOT EXISTS idx_model ON test_records(model_number);
|
|
CREATE INDEX IF NOT EXISTS idx_date ON test_records(test_date);
|
|
CREATE INDEX IF NOT EXISTS idx_model_serial ON test_records(model_number, serial_number);
|
|
CREATE INDEX IF NOT EXISTS idx_result ON test_records(overall_result);
|
|
CREATE INDEX IF NOT EXISTS idx_log_type ON test_records(log_type);
|
|
|
|
-- Full-text search virtual table
|
|
CREATE VIRTUAL TABLE IF NOT EXISTS test_records_fts USING fts5(
|
|
serial_number,
|
|
model_number,
|
|
raw_data,
|
|
content='test_records',
|
|
content_rowid='id'
|
|
);
|
|
|
|
-- Triggers to keep FTS index in sync
|
|
CREATE TRIGGER IF NOT EXISTS test_records_ai AFTER INSERT ON test_records BEGIN
|
|
INSERT INTO test_records_fts(rowid, serial_number, model_number, raw_data)
|
|
VALUES (new.id, new.serial_number, new.model_number, new.raw_data);
|
|
END;
|
|
|
|
CREATE TRIGGER IF NOT EXISTS test_records_ad AFTER DELETE ON test_records BEGIN
|
|
INSERT INTO test_records_fts(test_records_fts, rowid, serial_number, model_number, raw_data)
|
|
VALUES ('delete', old.id, old.serial_number, old.model_number, old.raw_data);
|
|
END;
|
|
|
|
CREATE TRIGGER IF NOT EXISTS test_records_au AFTER UPDATE ON test_records BEGIN
|
|
INSERT INTO test_records_fts(test_records_fts, rowid, serial_number, model_number, raw_data)
|
|
VALUES ('delete', old.id, old.serial_number, old.model_number, old.raw_data);
|
|
INSERT INTO test_records_fts(rowid, serial_number, model_number, raw_data)
|
|
VALUES (new.id, new.serial_number, new.model_number, new.raw_data);
|
|
END;
|
|
|