code.vegaprotocol.io/vega@v0.79.0/datanode/sqlstore/migrations/0110_update_vesting_stats.sql (about)

     1  -- +goose Up
     2  
     3  DROP TRIGGER IF EXISTS update_party_vesting_stats ON party_vesting_stats;
     4  -- update the vesting stats table to include the summed quantum balance and reward bonus multiplier
     5  ALTER TABLE party_vesting_stats
     6  ADD COLUMN IF NOT EXISTS summed_reward_bonus_multiplier NUMERIC(1000, 16) NOT NULL DEFAULT 0,
     7  ADD COLUMN IF NOT EXISTS summed_quantum_balance NUMERIC(1000, 16) NOT NULL DEFAULT 0;
     8  
     9  ALTER TABLE party_vesting_stats_current
    10  ADD COLUMN IF NOT EXISTS summed_reward_bonus_multiplier NUMERIC(1000, 16) NOT NULL DEFAULT 0,
    11  ADD COLUMN IF NOT EXISTS summed_quantum_balance NUMERIC(1000, 16) NOT NULL DEFAULT 0;
    12  
    13  -- create the trigger functions and triggers
    14  -- +goose StatementBegin
    15  create or replace function update_party_vesting_stats()
    16         returns trigger
    17         language plpgsql
    18  as $$
    19     begin
    20          insert into party_vesting_stats_current(party_id, at_epoch, reward_bonus_multiplier, quantum_balance, summed_reward_bonus_multiplier, summed_quantum_balance, vega_time)
    21          values (new.party_id, new.at_epoch, new.reward_bonus_multiplier, new.quantum_balance, new.summed_reward_bonus_multiplier, new.summed_quantum_balance, new.vega_time)
    22          on conflict(party_id)
    23          do update set
    24              at_epoch = excluded.at_epoch,
    25              reward_bonus_multiplier = excluded.reward_bonus_multiplier,
    26              quantum_balance = excluded.quantum_balance,
    27              summed_reward_bonus_multiplier = excluded.summed_reward_bonus_multiplier,
    28              summed_quantum_balance = excluded.summed_quantum_balance,
    29              vega_time = excluded.vega_time;
    30          return null;
    31     end;
    32  $$;
    33  -- +goose StatementEnd
    34  
    35  CREATE TRIGGER update_party_vesting_stats
    36      after insert or update
    37      on party_vesting_stats
    38      for each row execute function update_party_vesting_stats();
    39  
    40  -- +goose Down
    41  
    42  DROP TRIGGER IF EXISTS update_party_vesting_stats ON party_vesting_stats;
    43  ALTER TABLE party_vesting_stats
    44  DROP COLUMN summed_reward_bonus_multiplier,
    45  DROP COLUMN summed_quantum_balance;
    46  
    47  ALTER TABLE party_vesting_stats_current
    48  DROP COLUMN summed_reward_bonus_multiplier,
    49  DROP COLUMN summed_quantum_balance;
    50  
    51  -- +goose StatementBegin
    52  create or replace function update_party_vesting_stats()
    53         returns trigger
    54         language plpgsql
    55  as $$
    56     begin
    57          insert into party_vesting_stats_current(party_id, at_epoch, reward_bonus_multiplier, quantum_balance, vega_time)
    58          values (new.party_id, new.at_epoch, new.reward_bonus_multiplier, new.quantum_balance, new.vega_time)
    59          on conflict(party_id)
    60          do update set
    61             at_epoch = excluded.at_epoch,
    62             reward_bonus_multiplier = excluded.reward_bonus_multiplier,
    63  	   quantum_balance = excluded.quantum_balance,
    64  	   vega_time = excluded.vega_time;
    65          return null;
    66     end;
    67  $$;
    68  -- +goose StatementEnd
    69  
    70  CREATE TRIGGER update_party_vesting_stats
    71      after insert or update
    72      on party_vesting_stats
    73      for each row execute function update_party_vesting_stats();