-- Table to register analysis nodes from https://github.com/cartodb/camshaft
CREATE TABLE IF NOT EXISTS
cartodb.cdb_analysis_catalog (
    -- md5 hex hash
    node_id char(40) CONSTRAINT cdb_analysis_catalog_pkey PRIMARY KEY,
    -- being json allows to do queries like analysis_def->>'type' = 'buffer'
    analysis_def json NOT NULL,
    -- can reference other nodes in this very same table, allowing recursive queries
    input_nodes char(40) ARRAY NOT NULL DEFAULT '{}',
    status TEXT NOT NULL DEFAULT 'pending',
    CONSTRAINT valid_status CHECK (
        status IN ( 'pending', 'waiting', 'running', 'canceled', 'failed', 'ready' )
    ),
    created_at timestamp with time zone NOT NULL DEFAULT now(),
    -- should be updated when some operation was performed in the node
    -- and anything associated to it might have changed
    updated_at timestamp with time zone DEFAULT NULL,
    -- should register last time the node was used
    used_at timestamp with time zone NOT NULL DEFAULT now(),
    -- should register the number of times the node was used
    hits NUMERIC DEFAULT 0,
    -- should register what was the last node using current node
    last_used_from char(40)
);
