-- ============================================= -- BANCO DE DADOS: hubglpi -- DESCRIÇÃO: Sistema de integração entre HubSoft e GLPI -- OBS: Chamados sempre são abertos pelo HubSoft -- ============================================= -- ============================================= -- TABELA: hubsoft_tickets -- DESCRIÇÃO: Armazena os chamados originados do HubSoft -- ============================================= CREATE TABLE hubsoft_tickets ( id_atendimento INT PRIMARY KEY, codigo_cliente INTEGER NOT NULL, status_atendimento VARCHAR(64) NOT NULL, servico_nome VARCHAR(255), protocolo_hub VARCHAR(50) UNIQUE NOT NULL, ticket_mundiale INT, cliente_nome VARCHAR(255) NOT NULL, descricao_fechamento TEXT, data_fechamento TIMESTAMP, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- ============================================= -- TABELA: sync_data -- DESCRIÇÃO: Armazena o estado da sincronização entre HubSoft e GLPI -- ============================================= CREATE TYPE source_last_enum AS ENUM ('hubsoft', 'glpi'); CREATE TYPE status_sync_enum AS ENUM ( 'pending_create', 'created_glpi', 'pending_close', 'closed_glpi', 'sync_error', 'need_update' ); CREATE TABLE sync_data ( id SERIAL PRIMARY KEY, hubsoft_ticket_id INTEGER NOT NULL REFERENCES hubsoft_tickets(id_atendimento), glpi_ticket_id INTEGER, source_last source_last_enum DEFAULT 'hubsoft', status_sync status_sync_enum DEFAULT 'pending_create', sync_metadata JSONB, last_sync_attempt TIMESTAMP, sync_error_message TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, UNIQUE (hubsoft_ticket_id, glpi_ticket_id) );