mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-06 03:08:55 -05:00
Add float -> int migration to Bank (float was a bug) (#4386)
* Add float -> int migration to Bank (float was a bug) * wrong refs * Cause ctx manager compares before and after values...
This commit is contained in:
parent
4adf328fac
commit
b11359eebb
@ -47,7 +47,10 @@ __all__ = [
|
|||||||
|
|
||||||
_MAX_BALANCE = 2 ** 63 - 1
|
_MAX_BALANCE = 2 ** 63 - 1
|
||||||
|
|
||||||
|
_SCHEMA_VERSION = 1
|
||||||
|
|
||||||
_DEFAULT_GLOBAL = {
|
_DEFAULT_GLOBAL = {
|
||||||
|
"schema_version": 0,
|
||||||
"is_global": False,
|
"is_global": False,
|
||||||
"bank_name": "Twentysix bank",
|
"bank_name": "Twentysix bank",
|
||||||
"currency": "credits",
|
"currency": "credits",
|
||||||
@ -73,13 +76,48 @@ log = logging.getLogger("red.core.bank")
|
|||||||
_data_deletion_lock = asyncio.Lock()
|
_data_deletion_lock = asyncio.Lock()
|
||||||
|
|
||||||
|
|
||||||
def _init():
|
async def _init():
|
||||||
global _config
|
global _config
|
||||||
_config = Config.get_conf(None, 384734293238749, cog_name="Bank", force_registration=True)
|
_config = Config.get_conf(None, 384734293238749, cog_name="Bank", force_registration=True)
|
||||||
_config.register_global(**_DEFAULT_GLOBAL)
|
_config.register_global(**_DEFAULT_GLOBAL)
|
||||||
_config.register_guild(**_DEFAULT_GUILD)
|
_config.register_guild(**_DEFAULT_GUILD)
|
||||||
_config.register_member(**_DEFAULT_MEMBER)
|
_config.register_member(**_DEFAULT_MEMBER)
|
||||||
_config.register_user(**_DEFAULT_USER)
|
_config.register_user(**_DEFAULT_USER)
|
||||||
|
await _migrate_config()
|
||||||
|
|
||||||
|
|
||||||
|
async def _migrate_config():
|
||||||
|
schema_version = await _config.schema_version()
|
||||||
|
|
||||||
|
if schema_version == _SCHEMA_VERSION:
|
||||||
|
return
|
||||||
|
|
||||||
|
if schema_version == 0:
|
||||||
|
await _schema_0_to_1()
|
||||||
|
schema_version += 1
|
||||||
|
await _config.schema_version.set(schema_version)
|
||||||
|
|
||||||
|
|
||||||
|
async def _schema_0_to_1():
|
||||||
|
# convert floats in bank balances to ints
|
||||||
|
|
||||||
|
# don't use anything seen below in extensions, it's optimized and controlled for here,
|
||||||
|
# but can't be safe in 3rd party use
|
||||||
|
|
||||||
|
# this CANNOT use ctx manager, because ctx managers compare before and after,
|
||||||
|
# and floats can be equal to ints: (1.0 == 1) is True
|
||||||
|
group = _config._get_base_group(_config.USER)
|
||||||
|
bank_user_data = await group.all()
|
||||||
|
for user_config in bank_user_data.values():
|
||||||
|
user_config["balance"] = int(user_config["balance"])
|
||||||
|
await group.set(bank_user_data)
|
||||||
|
|
||||||
|
group = _config._get_base_group(_config.MEMBER)
|
||||||
|
bank_member_data = await group.all()
|
||||||
|
for guild_data in bank_member_data.values():
|
||||||
|
for member_config in guild_data.values():
|
||||||
|
member_config["balance"] = int(member_config["balance"])
|
||||||
|
await group.set(bank_member_data)
|
||||||
|
|
||||||
|
|
||||||
async def _process_data_deletion(
|
async def _process_data_deletion(
|
||||||
|
|||||||
@ -738,7 +738,7 @@ class RedBase(
|
|||||||
self.add_cog(Dev())
|
self.add_cog(Dev())
|
||||||
|
|
||||||
await modlog._init(self)
|
await modlog._init(self)
|
||||||
bank._init()
|
await bank._init()
|
||||||
|
|
||||||
packages = []
|
packages = []
|
||||||
|
|
||||||
|
|||||||
@ -5,11 +5,11 @@ __all__ = ["bank"]
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def bank(config, monkeypatch):
|
async def bank(config, monkeypatch):
|
||||||
from redbot.core import Config
|
from redbot.core import Config
|
||||||
|
|
||||||
with monkeypatch.context() as m:
|
with monkeypatch.context() as m:
|
||||||
m.setattr(Config, "get_conf", lambda *args, **kwargs: config)
|
m.setattr(Config, "get_conf", lambda *args, **kwargs: config)
|
||||||
# noinspection PyProtectedMember
|
# noinspection PyProtectedMember
|
||||||
bank_module._init()
|
await bank_module._init()
|
||||||
return bank_module
|
return bank_module
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user