49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
from data import Registry, RowModel
|
|
from data.columns import Integer, Timestamp, String
|
|
|
|
|
|
class RoomData(Registry):
|
|
class Room(RowModel):
|
|
"""
|
|
CREATE TABLE rented_rooms(
|
|
channelid BIGINT PRIMARY KEY,
|
|
guildid BIGINT NOT NULL,
|
|
ownerid BIGINT NOT NULL,
|
|
coin_balance INTEGER NOT NULL DEFAULT 0,
|
|
name TEXT,
|
|
created_at TIMESTAMPTZ DEFAULT now(),
|
|
last_tick TIMESTAMPTZ,
|
|
deleted_at TIMESTAMPTZ,
|
|
FOREIGN KEY (guildid, ownerid) REFERENCES members (guildid, userid) ON DELETE CASCADE
|
|
);
|
|
CREATE INDEX rented_owners ON rented (guildid, ownerid);
|
|
"""
|
|
_tablename_ = 'rented_rooms'
|
|
|
|
channelid = Integer(primary=True)
|
|
guildid = Integer()
|
|
ownerid = Integer()
|
|
coin_balance = Integer()
|
|
name = String()
|
|
created_at = Timestamp()
|
|
last_tick = Timestamp()
|
|
deleted_at = Timestamp()
|
|
|
|
class RoomMember(RowModel):
|
|
"""
|
|
Schema
|
|
------
|
|
CREATE TABLE rented_members(
|
|
channelid BIGINT NOT NULL REFERENCES rented(channelid) ON DELETE CASCADE,
|
|
userid BIGINT NOT NULL,
|
|
contribution INTEGER NOT NULL DEFAULT 0
|
|
);
|
|
CREATE INDEX rented_members_channels ON rented_members (channelid);
|
|
CREATE INDEX rented_members_users ON rented_members (userid);
|
|
"""
|
|
_tablename_ = 'rented_members'
|
|
|
|
channelid = Integer(primary=True)
|
|
userid = Integer(primary=True)
|
|
contribution = Integer()
|