-- +goose Up
-- +goose StatementBegin

CREATE TABLE IF NOT EXISTS silk_registros (
    id                  UUID          PRIMARY KEY DEFAULT uuid_generate_v4(),
    tenant_id           UUID          NOT NULL,
    ordem_id            UUID          NOT NULL REFERENCES ordens_producao(id) ON DELETE CASCADE,
    funcionario_id      UUID          REFERENCES users(id) ON DELETE SET NULL,
    funcionario_nome    TEXT          NOT NULL DEFAULT '',
    -- Posição: Frente
    frente_cores        INTEGER       NOT NULL DEFAULT 0,
    frente_pecas        INTEGER       NOT NULL DEFAULT 0,
    frente_mesa_corrida BOOLEAN       NOT NULL DEFAULT false,
    frente_mesa_termica BOOLEAN       NOT NULL DEFAULT false,
    -- Posição: Costa
    costa_cores         INTEGER       NOT NULL DEFAULT 0,
    costa_pecas         INTEGER       NOT NULL DEFAULT 0,
    costa_mesa_corrida  BOOLEAN       NOT NULL DEFAULT false,
    costa_mesa_termica  BOOLEAN       NOT NULL DEFAULT false,
    -- Posição: Peito
    peito_cores         INTEGER       NOT NULL DEFAULT 0,
    peito_pecas         INTEGER       NOT NULL DEFAULT 0,
    peito_mesa_corrida  BOOLEAN       NOT NULL DEFAULT false,
    peito_mesa_termica  BOOLEAN       NOT NULL DEFAULT false,
    -- Posição: Manga Esquerda
    manga_esq_cores     INTEGER       NOT NULL DEFAULT 0,
    manga_esq_pecas     INTEGER       NOT NULL DEFAULT 0,
    manga_esq_mesa_corrida BOOLEAN    NOT NULL DEFAULT false,
    manga_esq_mesa_termica BOOLEAN    NOT NULL DEFAULT false,
    -- Posição: Manga Direita
    manga_dir_cores     INTEGER       NOT NULL DEFAULT 0,
    manga_dir_pecas     INTEGER       NOT NULL DEFAULT 0,
    manga_dir_mesa_corrida BOOLEAN    NOT NULL DEFAULT false,
    manga_dir_mesa_termica BOOLEAN    NOT NULL DEFAULT false,
    -- Geral
    telas_reveladas     INTEGER       NOT NULL DEFAULT 0,
    observacoes         TEXT          NOT NULL DEFAULT '',
    concluido           BOOLEAN       NOT NULL DEFAULT false,
    concluido_em        TIMESTAMPTZ,
    criado_em           TIMESTAMPTZ   NOT NULL DEFAULT NOW(),
    atualizado_em       TIMESTAMPTZ   NOT NULL DEFAULT NOW(),
    UNIQUE(tenant_id, ordem_id)
);

CREATE INDEX IF NOT EXISTS idx_silk_ordem ON silk_registros(ordem_id);

-- +goose StatementEnd
-- +goose Down
-- +goose StatementBegin
DROP TABLE IF EXISTS silk_registros;
-- +goose StatementEnd
