48 lines
1.7 KiB
SQL
48 lines
1.7 KiB
SQL
create table message_sends
|
|
(
|
|
from_key text not null,
|
|
to_addr text not null,
|
|
send_reason text not null,
|
|
send_task_id bigint not null,
|
|
|
|
unsigned_data bytea not null,
|
|
unsigned_cid text not null,
|
|
|
|
nonce bigint,
|
|
signed_data bytea,
|
|
signed_json jsonb,
|
|
signed_cid text,
|
|
|
|
send_time timestamp default null,
|
|
send_success boolean default null,
|
|
send_error text,
|
|
|
|
constraint message_sends_pk
|
|
primary key (send_task_id, from_key)
|
|
);
|
|
|
|
comment on column message_sends.from_key is 'text f[1/3/4]... address';
|
|
comment on column message_sends.nonce is 'assigned message nonce';
|
|
comment on column message_sends.to_addr is 'text f[0/1/2/3/4]... address';
|
|
comment on column message_sends.signed_data is 'signed message data';
|
|
comment on column message_sends.signed_cid is 'signed message cid';
|
|
comment on column message_sends.send_reason is 'optional description of send reason';
|
|
comment on column message_sends.send_success is 'whether this message was broadcasted to the network already';
|
|
|
|
create unique index message_sends_success_index
|
|
on message_sends (from_key, nonce)
|
|
where send_success is not false;
|
|
|
|
comment on index message_sends_success_index is
|
|
'message_sends_success_index enforces sender/nonce uniqueness, it is a conditional index that only indexes rows where send_success is not false. This allows us to have multiple rows with the same sender/nonce, as long as only one of them was successfully broadcasted (true) to the network or is in the process of being broadcasted (null).';
|
|
|
|
create table message_send_locks
|
|
(
|
|
from_key text not null,
|
|
task_id bigint not null,
|
|
claimed_at timestamp not null,
|
|
|
|
constraint message_send_locks_pk
|
|
primary key (from_key)
|
|
);
|