29 lines
1.1 KiB
PL/PgSQL
29 lines
1.1 KiB
PL/PgSQL
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
|
|
CREATE TABLE backie_tasks (
|
|
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
payload jsonb NOT NULL,
|
|
error_message TEXT DEFAULT NULL,
|
|
task_type VARCHAR DEFAULT 'common' NOT NULL,
|
|
uniq_hash CHAR(64) DEFAULT NULL,
|
|
retries INTEGER DEFAULT 0 NOT NULL,
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
|
running_at TIMESTAMP WITH TIME ZONE DEFAULT NULL,
|
|
done_at TIMESTAMP WITH TIME ZONE DEFAULT NULL
|
|
);
|
|
|
|
CREATE INDEX backie_tasks_type_index ON backie_tasks(task_type);
|
|
CREATE INDEX backie_tasks_created_at_index ON backie_tasks(created_at);
|
|
CREATE INDEX backie_tasks_uniq_hash ON backie_tasks(uniq_hash);
|
|
|
|
--- create uniqueness index
|
|
CREATE UNIQUE INDEX backie_tasks_uniq_hash_index ON backie_tasks(uniq_hash) WHERE uniq_hash IS NOT NULL;
|
|
|
|
CREATE FUNCTION backie_notify_new_tasks() returns trigger as $$
|
|
BEGIN
|
|
perform pg_notify('backie::tasks', 'created');
|
|
return new;
|
|
END;
|
|
$$ language plpgsql;
|
|
|
|
CREATE TRIGGER backie_notify_workers after insert on backie_tasks for each statement execute procedure backie_notify_new_tasks();
|