Commit 37e1bc2a authored by Jeremy Pallats's avatar Jeremy Pallats 💬
Browse files

Cleanup schems for dbs a bit.

- Make indexes where appropriate.
parent aee03603
Loading
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ LEN = { # Lengths for strings stored in the db
    "settlement_security": 10,
    "settlement_size": 3,
    "ship": 20,
    "station": 38,
    "station": 41,
    "station_pad": 4,
    "station_type": 24,
    "system": 30,
@@ -187,7 +187,7 @@ class Faction(Base):
    __tablename__ = "factions"

    id = sqla.Column(sqla.Integer, primary_key=True)
    name = sqla.Column(sqla.String(LEN["faction"]))
    name = sqla.Column(sqla.String(LEN["faction"]), index=True)
    is_player_faction = sqla.Column(sqla.Boolean)
    home_system_id = sqla.Column(sqla.Integer)  # Makes circular foreigns.
    allegiance_id = sqla.Column(sqla.Integer, sqla.ForeignKey('allegiance.id'))
@@ -640,7 +640,7 @@ class Station(Base):
    __tablename__ = "stations"

    id = sqla.Column(sqla.Integer, primary_key=True)
    name = sqla.Column(sqla.String(LEN["station"]))
    name = sqla.Column(sqla.String(LEN["station"]), index=True)
    distance_to_star = sqla.Column(sqla.Integer)
    is_planetary = sqla.Column(sqla.Boolean)
    max_landing_pad_size = sqla.Column(sqla.String(LEN["station_pad"]))
@@ -689,7 +689,7 @@ class System(Base):
    __tablename__ = "systems"

    id = sqla.Column(sqla.Integer, primary_key=True)
    name = sqla.Column(sqla.String(LEN["system"]))
    name = sqla.Column(sqla.String(LEN["system"]), index=True)
    population = sqla.Column(sqla.BigInteger)
    needs_permit = sqla.Column(sqla.Integer)
    edsm_id = sqla.Column(sqla.Integer)
@@ -1021,6 +1021,7 @@ def preload_economies(session):
        Economy(id=14, text="Prison", eddn="Prison"),
        Economy(id=15, text="Carrier", eddn="Carrier"),
        Economy(id=16, text="Damaged", eddn="Damaged"),
        Economy(id=17, text="Repair", eddn="Repair"),
    ])


@@ -1176,6 +1177,7 @@ def preload_station_types(session):
        StationType(id=22, text='Unknown Dockable'),
        StationType(id=23, text='Non-Dockable Orbital'),
        StationType(id=24, text='Fleet Carrier', eddn='FleetCarrier'),
        StationType(id=25, text='Odyssey Settlement', eddn='OdysseySettlement'),
    ])


+16 −16
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ class DiscordUser(Base):

    id = sqla.Column(sqla.BigInteger, primary_key=True)  # Discord id
    display_name = sqla.Column(sqla.String(LEN_NAME))
    pref_name = sqla.Column(sqla.String(LEN_NAME), unique=True, nullable=False)  # pref_name == display_name until change
    pref_name = sqla.Column(sqla.String(LEN_NAME), index=True, nullable=False)  # pref_name == display_name until change
    pref_cry = sqla.Column(sqla.String(LEN_NAME), default='')

    # Relationships
@@ -110,7 +110,7 @@ class FortUser(Base):
    __tablename__ = 'hudson_fort_users'

    id = sqla.Column(sqla.Integer, primary_key=True)
    name = sqla.Column(sqla.String(LEN_NAME), unique=True)  # Undeclared FK to discord_users
    name = sqla.Column(sqla.String(LEN_NAME), index=True)  # Undeclared FK to discord_users
    row = sqla.Column(sqla.Integer, unique=True)
    cry = sqla.Column(sqla.String(LEN_NAME), default='')

@@ -179,7 +179,7 @@ class FortSystem(Base):
    header = ['Type', 'System', 'Missing', 'Merits (Fort%/UM%)', 'Notes']

    id = sqla.Column(sqla.Integer, primary_key=True)
    name = sqla.Column(sqla.String(LEN_NAME), unique=True)
    name = sqla.Column(sqla.String(LEN_NAME), index=True)
    type = sqla.Column(sqla.Enum(EFortType), default=EFortType.fort)
    fort_status = sqla.Column(sqla.Integer, default=0)
    trigger = sqla.Column(sqla.Integer, default=1)
@@ -188,7 +188,7 @@ class FortSystem(Base):
    undermine = sqla.Column(sqla.Float, default=0.0)
    distance = sqla.Column(sqla.Float, default=0.0)
    notes = sqla.Column(sqla.String(LEN_NAME), default='')
    sheet_col = sqla.Column(sqla.String(LEN_SHEET_COL), default='')
    sheet_col = sqla.Column(sqla.String(LEN_SHEET_COL), default='', unique=True)
    sheet_order = sqla.Column(sqla.Integer)
    manual_order = sqla.Column(sqla.Integer, nullable=True)

@@ -392,7 +392,7 @@ class FortDrop(Base):
    __tablename__ = 'hudson_fort_merits'

    id = sqla.Column(sqla.Integer, primary_key=True)
    amount = sqla.Column(sqla.Integer)
    amount = sqla.Column(sqla.Integer, default=0, nullable=False)
    system_id = sqla.Column(sqla.Integer, sqla.ForeignKey('hudson_fort_systems.id'), nullable=False)
    user_id = sqla.Column(sqla.Integer, sqla.ForeignKey('hudson_fort_users.id'), nullable=False)

@@ -465,7 +465,7 @@ class UMUser(Base):
    __tablename__ = 'hudson_um_users'

    id = sqla.Column(sqla.Integer, primary_key=True)
    name = sqla.Column(sqla.String(LEN_NAME), unique=True)  # Undeclared FK to discord_users
    name = sqla.Column(sqla.String(LEN_NAME), index=True)  # Undeclared FK to discord_users
    row = sqla.Column(sqla.Integer, unique=True)
    cry = sqla.Column(sqla.String(LEN_NAME), default='')

@@ -559,10 +559,10 @@ class UMSystem(Base):
    __tablename__ = 'hudson_um_systems'

    id = sqla.Column(sqla.Integer, primary_key=True)
    name = sqla.Column(sqla.String(LEN_NAME), unique=True)
    type = sqla.Column(sqla.Enum(EUMType))
    sheet_col = sqla.Column(sqla.String(LEN_SHEET_COL))
    goal = sqla.Column(sqla.Integer)
    name = sqla.Column(sqla.String(LEN_NAME), index=True)
    type = sqla.Column(sqla.Enum(EUMType), default=EUMType.control)
    sheet_col = sqla.Column(sqla.String(LEN_SHEET_COL), unique=True)
    goal = sqla.Column(sqla.Integer, default=0)
    security = sqla.Column(sqla.String(LEN_NAME), default='')
    notes = sqla.Column(sqla.String(LEN_NAME), default='')
    close_control = sqla.Column(sqla.String(LEN_NAME), default='')
@@ -742,8 +742,8 @@ class UMHold(Base):
    id = sqla.Column(sqla.Integer, primary_key=True)
    system_id = sqla.Column(sqla.Integer, sqla.ForeignKey('hudson_um_systems.id'), nullable=False)
    user_id = sqla.Column(sqla.Integer, sqla.ForeignKey('hudson_um_users.id'), nullable=False)
    held = sqla.Column(sqla.Integer)
    redeemed = sqla.Column(sqla.Integer)
    held = sqla.Column(sqla.Integer, default=0, nullable=False)
    redeemed = sqla.Column(sqla.Integer, default=0, nullable=False)

    # Relationships
    user = sqla_orm.relationship('UMUser', uselist=False, back_populates='merits',
@@ -786,10 +786,10 @@ class KOS(Base):
    __tablename__ = 'kos'

    id = sqla.Column(sqla.Integer, primary_key=True)
    cmdr = sqla.Column(sqla.String(LEN_NAME), unique=True, nullable=False)
    cmdr = sqla.Column(sqla.String(LEN_NAME), index=True, nullable=False)
    faction = sqla.Column(sqla.String(LEN_NAME), nullable=False)
    reason = sqla.Column(sqla.String(LEN_REASON), nullable=False)
    is_friendly = sqla.Column(sqla.Boolean)
    is_friendly = sqla.Column(sqla.Boolean, default=False)

    def __repr__(self):
        keys = ['id', 'cmdr', 'faction', 'reason', 'is_friendly']
@@ -894,7 +894,7 @@ class TrackSystem(Base):
    __tablename__ = 'carriers_systems'

    system = sqla.Column(sqla.String(LEN_NAME), primary_key=True)
    distance = sqla.Column(sqla.Integer)
    distance = sqla.Column(sqla.Integer, default=15, nullable=False)

    def __repr__(self):
        keys = ['system', 'distance']
@@ -947,7 +947,7 @@ class TrackByID(Base):
    system = sqla.Column(sqla.String(LEN_NAME), default="")
    # This flag indicates user requested this ID ALWAYS be tracked, regardless of location.
    override = sqla.Column(sqla.Boolean, default=False)
    updated_at = sqla.Column(sqla.DateTime, default=datetime.datetime.utcnow)  # All dates UTC
    updated_at = sqla.Column(sqla.DateTime, default=datetime.datetime.utcnow, index=True)  # All dates UTC

    def __repr__(self):
        keys = ['id', 'squad', 'system', 'override', 'updated_at']
+3 −2
Original line number Diff line number Diff line
@@ -143,7 +143,8 @@ async def test_cmd_admin_removeum_fail(f_admins, f_bot, db_cleanup):


@pytest.mark.asyncio
async def test_cmd_admin_removeum(f_admins, f_dusers, f_bot, f_asheet_umscanner, f_um_testbed, patch_scanners, db_cleanup, f_umformula_values):
async def test_cmd_admin_removeum(f_bot, f_dusers, f_admins, f_um_testbed,
                                  f_umformula_values, patch_scanners, db_cleanup):
    fake_um = cog.actions.SCANNERS['hudson_undermine']
    fake_um._values = [f_umformula_values[4:]]

@@ -1356,7 +1357,7 @@ async def test_cmd_near_if(f_bot):
    await action_map(msg, f_bot).execute()

    actual = str(f_bot.send_message.call_args).replace("\\n", "\n")
    assert "LHS 397        | 19.32    | [L] Zillig Depot" in actual
    assert "Wolf 294 " in actual


def test_process_system_args():
+5 −0
Original line number Diff line number Diff line
@@ -262,6 +262,7 @@ def f_admins(session):

    yield admins

    session.rollback()
    session.query(AdminPerm).delete()
    session.commit()

@@ -277,6 +278,7 @@ def f_cperms(session):

    yield perms

    session.rollback()
    session.query(ChannelPerm).delete()
    session.commit()

@@ -292,6 +294,7 @@ def f_rperms(session):

    yield perms

    session.rollback()
    session.query(RolePerm).delete()
    session.commit()

@@ -309,6 +312,7 @@ def f_fortorders(session):

    yield systems

    session.rollback()
    session.query(FortOrder).delete()
    session.commit()

@@ -328,6 +332,7 @@ def f_kos(session):

    yield kos_rows

    session.rollback()
    session.query(KOS).delete()
    session.commit()