-- +goose Up
-- +goose StatementBegin
CREATE TABLE line_stages (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    description TEXT,
    stage_order INT NOT NULL UNIQUE,
    equipment VARCHAR(200),
    mqtt_topic VARCHAR(200)
);

CREATE TABLE sensor_readings (
    id SERIAL PRIMARY KEY,
    stage_id INT REFERENCES line_stages(id) ON DELETE CASCADE,
    sensor VARCHAR(100) NOT NULL,
    value DOUBLE PRECISION NOT NULL,
    unit VARCHAR(20),
    timestamp TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE TABLE production_events (
    id SERIAL PRIMARY KEY,
    stage_id INT REFERENCES line_stages(id) ON DELETE CASCADE,
    event_type VARCHAR(100) NOT NULL,
    data TEXT,
    timestamp TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

-- Индексы для производительности
CREATE INDEX idx_sensor_readings_stage ON sensor_readings(stage_id, timestamp DESC);
CREATE INDEX idx_production_events_stage ON production_events(stage_id, timestamp DESC);

-- Начальные данные этапов линии
INSERT INTO line_stages (name, description, stage_order, equipment, mqtt_topic) VALUES
    ('Разгрузка', 'Приемка лома, взвешивание', 1, 'Рампа, весы', '/sensor/weight/party'),
    ('QR Сортировка', 'Сканирование QR-кодов', 2, 'Camera Module v3', '/qr/result'),
    ('Подача', 'Загрузка на конвейер', 3, 'Danfoss VLT FC 302', '/drive/telemetry'),
    ('Дробление', 'Шредер / Дробилка', 4, 'SEW MOVITRAC', '/drive/vibration'),
    ('Мойка', 'Очистка, флотация', 5, 'Ванна, насосы', '/sensor/level'),
    ('Сушка', 'Удаление влаги', 6, 'Центрифуга', '/sensor/dry/temp'),
    ('Экструзия', 'Плавление, грануляция', 7, 'ABB ACS880', '/extruder/pressure'),
    ('Манипулятор', 'Упаковка, паллетирование', 8, 'Робот-упаковщик', '/robot/cycle');
-- +goose StatementEnd

-- +goose Down
-- +goose StatementBegin
DROP TABLE IF EXISTS production_events;
DROP TABLE IF EXISTS sensor_readings;
DROP TABLE IF EXISTS line_stages;
-- +goose StatementEnd
