gems: Generalise gem transaction table.

Updates gem audit table for more generality.
Fixes issue with `Row._refresh()`.
Data migration v11 -> v12.
Remove `set_gems` (not needed due to gem module refactor).
This commit is contained in:
2022-04-02 11:40:42 +03:00
parent 645c437edd
commit 6f9c8b7138
5 changed files with 43 additions and 20 deletions

View File

@@ -1,2 +1,2 @@
CONFIG_FILE = "config/bot.conf" CONFIG_FILE = "config/bot.conf"
DATA_VERSION = 11 DATA_VERSION = 12

View File

@@ -123,19 +123,6 @@ def get_member_rank(guildid, userid, untracked):
return curs.fetchone() or (None, None) return curs.fetchone() or (None, None)
@user_config.save_query
def set_gems(userid, amount):
with user_config.conn as conn:
cursor = conn.cursor()
cursor.execute(
"UPDATE user_config SET gems = %s WHERE userid = %s RETURNING *",
(amount, userid)
)
data = cursor.fetchone()
if data:
return user_config._make_rows(data)[0]
global_guild_blacklist = Table('global_guild_blacklist') global_guild_blacklist = Table('global_guild_blacklist')
global_user_blacklist = Table('global_user_blacklist') global_user_blacklist = Table('global_user_blacklist')
ignored_members = Table('ignored_members') ignored_members = Table('ignored_members')

View File

@@ -149,7 +149,7 @@ class Row:
self._pending = None self._pending = None
def _refresh(self): def _refresh(self):
row = self.table.select_one_where(self.table.dict_from_id(self.rowid)) row = self.table.select_one_where(**self.table.dict_from_id(self.rowid))
if not row: if not row:
raise ValueError("Refreshing a {} which no longer exists!".format(type(self).__name__)) raise ValueError("Refreshing a {} which no longer exists!".format(type(self).__name__))
self.data = row self.data = row

View File

@@ -0,0 +1,27 @@
-- Add gem support
ALTER TABLE user_config ADD COLUMN gems INTEGER DEFAULT 0;
-- LionGem audit log {{{
CREATE TYPE GemTransactionType AS ENUM (
'ADMIN',
'GIFT',
'PURCHASE',
'AUTOMATIC'
);
CREATE TABLE gem_transactions(
transactionid SERIAL PRIMARY KEY,
transaction_type GemTransactionType NOT NULL,
actorid BIGINT NOT NULL,
from_account BIGINT,
to_account BIGINT,
amount INTEGER NOT NULL,
description TEXT NOT NULL,
note TEXT,
reference TEXT,
_timestamp TIMESTAMPTZ DEFAULT now()
);
CREATE INDEX gem_transactions_from ON gem_transactions (from_account);
-- }}}
INSERT INTO VersionHistory (version, author) VALUES (12, 'v11-v12 migration');

View File

@@ -4,7 +4,7 @@ CREATE TABLE VersionHistory(
time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL, time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
author TEXT author TEXT
); );
INSERT INTO VersionHistory (version, author) VALUES (11, 'Initial Creation'); INSERT INTO VersionHistory (version, author) VALUES (12, 'Initial Creation');
CREATE OR REPLACE FUNCTION update_timestamp_column() CREATE OR REPLACE FUNCTION update_timestamp_column()
@@ -823,17 +823,26 @@ CREATE TABLE sponsor_guild_whitelist(
-- }}} -- }}}
-- LionGem audit log {{{ -- LionGem audit log {{{
CREATE TYPE GemTransactionType AS ENUM (
'ADMIN',
'GIFT',
'PURCHASE',
'AUTOMATIC'
);
CREATE TABLE gem_transactions( CREATE TABLE gem_transactions(
transactionid SERIAL PRIMARY KEY, transactionid SERIAL PRIMARY KEY,
transaction_type GemTransactionType NOT NULL,
actorid BIGINT NOT NULL, actorid BIGINT NOT NULL,
targetid BIGINT NOT NULL, from_account BIGINT,
to_account BIGINT,
amount INTEGER NOT NULL, amount INTEGER NOT NULL,
total INTEGER NOT NULL, description TEXT NOT NULL,
reason TEXT NOT NULL,
note TEXT, note TEXT,
gift BOOLEAN DEFAULT FALSE, reference TEXT,
_timestamp TIMESTAMPTZ DEFAULT now() _timestamp TIMESTAMPTZ DEFAULT now()
); );
CREATE INDEX gem_transactions_from ON gem_transactions (from_account);
-- }}} -- }}}
-- vim: set fdm=marker: -- vim: set fdm=marker: