53 lines
1.4 KiB
MySQL
53 lines
1.4 KiB
MySQL
|
/**
|
||
|
* This plugin implementation for PostgreSQL requires the following tables
|
||
|
*/
|
||
|
-- The table storing accounts
|
||
|
|
||
|
|
||
|
CREATE TABLE account (
|
||
|
pubkey BYTEA PRIMARY KEY,
|
||
|
owner BYTEA,
|
||
|
lamports BIGINT NOT NULL,
|
||
|
slot BIGINT NOT NULL,
|
||
|
executable BOOL NOT NULL,
|
||
|
rent_epoch BIGINT NOT NULL,
|
||
|
data BYTEA,
|
||
|
updated_on TIMESTAMP NOT NULL
|
||
|
);
|
||
|
|
||
|
-- The table storing slot information
|
||
|
CREATE TABLE slot (
|
||
|
slot BIGINT PRIMARY KEY,
|
||
|
parent BIGINT,
|
||
|
status varchar(16) NOT NULL,
|
||
|
updated_on TIMESTAMP NOT NULL
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* The following is for keeping historical data for accounts and is not required for plugin to work.
|
||
|
*/
|
||
|
-- The table storing historical data for accounts
|
||
|
CREATE TABLE account_audit (
|
||
|
pubkey BYTEA,
|
||
|
owner BYTEA,
|
||
|
lamports BIGINT NOT NULL,
|
||
|
slot BIGINT NOT NULL,
|
||
|
executable BOOL NOT NULL,
|
||
|
rent_epoch BIGINT NOT NULL,
|
||
|
data BYTEA,
|
||
|
updated_on TIMESTAMP NOT NULL
|
||
|
);
|
||
|
|
||
|
CREATE FUNCTION audit_account_update() RETURNS trigger AS $audit_account_update$
|
||
|
BEGIN
|
||
|
INSERT INTO account_audit (pubkey, owner, lamports, slot, executable, rent_epoch, data, updated_on)
|
||
|
VALUES (OLD.pubkey, OLD.owner, OLD.lamports, OLD.slot,
|
||
|
OLD.executable, OLD.rent_epoch, OLD.data, OLD.updated_on);
|
||
|
RETURN NEW;
|
||
|
END;
|
||
|
|
||
|
$audit_account_update$ LANGUAGE plpgsql;
|
||
|
|
||
|
CREATE TRIGGER account_update_trigger AFTER UPDATE OR DELETE ON account
|
||
|
FOR EACH ROW EXECUTE PROCEDURE audit_account_update();
|