diff --git a/bot/constants.py b/bot/constants.py index 7038953b..ffe4b057 100644 --- a/bot/constants.py +++ b/bot/constants.py @@ -1,2 +1,2 @@ CONFIG_FILE = "config/bot.conf" -DATA_VERSION = 11 +DATA_VERSION = 12 diff --git a/bot/core/data.py b/bot/core/data.py index 71e45b52..a74c754c 100644 --- a/bot/core/data.py +++ b/bot/core/data.py @@ -17,7 +17,7 @@ app_config = Table('AppConfig') user_config = RowTable( 'user_config', - ('userid', 'timezone', 'topgg_vote_reminder', 'avatar_hash'), + ('userid', 'timezone', 'topgg_vote_reminder', 'avatar_hash', 'gems'), 'userid', cache=TTLCache(5000, ttl=60*5) ) diff --git a/bot/data/interfaces.py b/bot/data/interfaces.py index 501acdc0..44cc4a3c 100644 --- a/bot/data/interfaces.py +++ b/bot/data/interfaces.py @@ -149,7 +149,7 @@ class Row: self._pending = None 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: raise ValueError("Refreshing a {} which no longer exists!".format(type(self).__name__)) self.data = row diff --git a/bot/modules/meta/help.py b/bot/modules/meta/help.py index 719a87df..ccdf0b59 100644 --- a/bot/modules/meta/help.py +++ b/bot/modules/meta/help.py @@ -21,26 +21,27 @@ group_hints = { 'Personal Settings': "*Tell me about yourself!*", 'Guild Admin': "*Dangerous administration commands!*", 'Guild Configuration': "*Control how I behave in your server.*", - 'Meta': "*Information about me!*" + 'Meta': "*Information about me!*", + 'Premium': "*Support the team and keep the project alive by using LionGems!*" } standard_group_order = ( - ('Pomodoro', 'Productivity', 'Statistics', 'Economy', 'Personal Settings', 'Meta'), + ('Pomodoro', 'Productivity', 'Premium', 'Statistics', 'Economy', 'Personal Settings', 'Meta'), ) mod_group_order = ( ('Moderation', 'Meta'), - ('Pomodoro', 'Productivity', 'Statistics', 'Economy', 'Personal Settings') + ('Pomodoro', 'Productivity', 'Premium', 'Statistics', 'Economy', 'Personal Settings') ) admin_group_order = ( ('Guild Admin', 'Guild Configuration', 'Moderation', 'Meta'), - ('Pomodoro', 'Productivity', 'Statistics', 'Economy', 'Personal Settings') + ('Pomodoro', 'Productivity', 'Premium', 'Statistics', 'Economy', 'Personal Settings') ) bot_admin_group_order = ( ('Bot Admin', 'Guild Admin', 'Guild Configuration', 'Moderation', 'Meta'), - ('Pomodoro', 'Productivity', 'Statistics', 'Economy', 'Personal Settings') + ('Pomodoro', 'Productivity', 'Premium', 'Statistics', 'Economy', 'Personal Settings') ) # Help embed format diff --git a/data/migration/v11-v12/migration.sql b/data/migration/v11-v12/migration.sql new file mode 100644 index 00000000..460f037b --- /dev/null +++ b/data/migration/v11-v12/migration.sql @@ -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'); diff --git a/data/schema.sql b/data/schema.sql index 69592305..cbaebd3e 100644 --- a/data/schema.sql +++ b/data/schema.sql @@ -4,7 +4,7 @@ CREATE TABLE VersionHistory( time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL, 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() @@ -48,9 +48,10 @@ CREATE TABLE global_guild_blacklist( CREATE TABLE user_config( userid BIGINT PRIMARY KEY, timezone TEXT, - topgg_vote_reminder, + topgg_vote_reminder BOOLEAN, avatar_hash TEXT, - API_timestamp BIGINT + API_timestamp BIGINT, + gems INTEGER DEFAULT 0 ); -- }}} @@ -821,4 +822,27 @@ CREATE TABLE sponsor_guild_whitelist( ); -- }}} +-- 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); +-- }}} + -- vim: set fdm=marker: