diff --git a/sqldb/sqlc/migrations/000003_invoice_events.down.sql b/sqldb/sqlc/migrations/000003_invoice_events.down.sql new file mode 100644 index 000000000..66e554e24 --- /dev/null +++ b/sqldb/sqlc/migrations/000003_invoice_events.down.sql @@ -0,0 +1,9 @@ +DROP TABLE IF EXISTS invoice_events; + +DROP INDEX IF EXISTS invoice_events_created_at_idx; +DROP INDEX IF EXISTS invoice_events_invoice_id_idx; +DROP INDEX IF EXISTS invoice_events_htlc_id_idx; +DROP INDEX IF EXISTS invoice_events_set_id_idx; +DROP INDEX IF EXISTS invoice_events_event_type_idx; + +DROP TABLE IF EXISTS invoice_event_types; diff --git a/sqldb/sqlc/migrations/000003_invoice_events.up.sql b/sqldb/sqlc/migrations/000003_invoice_events.up.sql new file mode 100644 index 000000000..47d2a91d0 --- /dev/null +++ b/sqldb/sqlc/migrations/000003_invoice_events.up.sql @@ -0,0 +1,59 @@ +-- invoice_event_types stores the different types of events that can be emitted +-- for invoices. +CREATE TABLE IF NOT EXISTS invoice_event_types( + id INTEGER PRIMARY KEY, + + description TEXT NOT NULL +); + +-- invoice_events stores all events related to the node invoices. +CREATE TABLE IF NOT EXISTS invoice_events ( + id INTEGER PRIMARY KEY, + + -- created_at is the creation time of this event. + created_at TIMESTAMP NOT NULL, + + -- invoice_id is the reference to the invoice this event was emitted for. + invoice_id INTEGER NOT NULL REFERENCES invoices(id), + + -- htlc_id is the reference to the htlc this event was emitted for, may be + -- null. + htlc_id BIGINT REFERENCES invoice_htlcs(htlc_id), + + -- set_id is the reference to the set_id this event was emitted for, may be + -- null. + set_id BLOB NOT NULL REFERENCES amp_invoice_payments(set_id), + + -- event_type is the type of this event. + event_type INTEGER NOT NULL REFERENCES invoice_event_types(id), + + -- event_metadata is a TLV encoding any relevant information for this kind + -- of events. + event_metadata BLOB +); + +CREATE INDEX IF NOT EXISTS invoice_events_created_at_idx ON invoice_events(created_at); +CREATE INDEX IF NOT EXISTS invoice_events_invoice_id_idx ON invoice_events(invoice_id); +CREATE INDEX IF NOT EXISTS invoice_events_htlc_id_idx ON invoice_events(htlc_id); +CREATE INDEX IF NOT EXISTS invoice_events_set_id_idx ON invoice_events(set_id); +CREATE INDEX IF NOT EXISTS invoice_events_event_type_idx ON invoice_events(event_type); + + +-- invoice_event_types defines the different types of events that can be emitted +-- for an invoice. +INSERT INTO invoice_event_types (id, description) +VALUES + -- invoice_created is the event emitted when an invoice is created. + (0, 'invoice_created'), + -- invoice_canceled is the event emitted when an invoice is canceled. + (1, "invoice_canceled"), + -- invoice_settled is the event emitted when an invoice is settled. + (2, "invoice_settled"), + -- setid_created is the event emitted when the first htlc for the set_id is + -- received. + (3, "setid_created"), + -- setid_canceled is the event emitted when the set_id is canceled. + (4, "setid_canceled"), + -- setid_settled is the event emitted when the set_id is settled. + (5, "setid_settled"); +