fuck orm
This commit is contained in:
parent
d75fcf3507
commit
c87c517217
5 changed files with 140 additions and 213 deletions
140
db/quest.py
140
db/quest.py
|
|
@ -1,76 +1,74 @@
|
|||
from sqlalchemy import Column, Integer, BigInteger, String, ForeignKey
|
||||
from sqlalchemy.orm import relationship
|
||||
from .base import BaseDB
|
||||
|
||||
from .base import Base
|
||||
DATABASES = {
|
||||
"QuestMst.db": "Quest",
|
||||
"QuestSceneMst.db": "QuestScene",
|
||||
"QuestPartMst.db": "QuestPart",
|
||||
"ResourceEntry.db": "ResourceEntry",
|
||||
}
|
||||
|
||||
|
||||
class Quest(Base):
|
||||
__tablename__ = "QuestMstRecord"
|
||||
__table_args__ = {"schema": "Quest"}
|
||||
class QuestDB(BaseDB):
|
||||
def __init__(self, path):
|
||||
super().__init__(path, DATABASES)
|
||||
|
||||
questMstId = Column(Integer, primary_key=True)
|
||||
questType = Column(Integer)
|
||||
sortNum = Column(Integer)
|
||||
name = Column(String)
|
||||
prevQuestMstId = Column(Integer)
|
||||
eventItemMstIds = Column(Integer)
|
||||
valid = Column(Integer)
|
||||
baseQuestMstId = Column(Integer)
|
||||
updatedTime = Column(BigInteger)
|
||||
def get_quests(self):
|
||||
self.cursor.execute(
|
||||
"""
|
||||
SELECT
|
||||
q.questMstId,
|
||||
q.name,
|
||||
group_concat(DISTINCT qp.questSceneMstId) AS scenes
|
||||
FROM Quest.QuestMstRecord q
|
||||
INNER JOIN QuestScene.QuestSceneMstRecord qs
|
||||
ON q.questMstId = qs.questMstId
|
||||
INNER JOIN QuestPart.QuestPartMstRecord qp
|
||||
ON qs.questSceneMstId = qp.questSceneMstId
|
||||
WHERE q.baseQuestMstId = 0
|
||||
AND (qp.beforeTalkName != "" OR qp.afterTalkName != "")
|
||||
GROUP BY q.questMstId
|
||||
"""
|
||||
)
|
||||
res = self.cursor.fetchall()
|
||||
quests = {}
|
||||
for quest_id, name, scenes in res:
|
||||
quests[quest_id] = {}
|
||||
quests[quest_id]["Name"] = name
|
||||
quests[quest_id]["Scenes"] = scenes.split(",")
|
||||
return quests
|
||||
|
||||
scenes = relationship("QuestScene")
|
||||
|
||||
def __repr__(self):
|
||||
return "<Quest(questMstId={}, name={})>".format(self.questMstId, self.name)
|
||||
|
||||
|
||||
class QuestScene(Base):
|
||||
__tablename__ = "QuestSceneMstRecord"
|
||||
__table_args__ = {"schema": "QuestScene"}
|
||||
|
||||
questSceneMstId = Column(Integer, primary_key=True)
|
||||
questMstId = Column(Integer, ForeignKey("Quest.QuestMstRecord.questMstId"))
|
||||
_type = Column("type", Integer)
|
||||
sortNum = Column(Integer)
|
||||
name = Column(String)
|
||||
_filter = Column("filter", Integer)
|
||||
prevQuestSceneMstId = Column(
|
||||
Integer, ForeignKey("QuestScene.QuestSceneMstRecord.questSceneMstId")
|
||||
)
|
||||
releaseSerial = Column(Integer)
|
||||
releaseEvolutionLevel = Column(Integer)
|
||||
summaryText = Column(String)
|
||||
presentType = Column(String)
|
||||
objectId = Column(Integer)
|
||||
num = Column(Integer)
|
||||
appearanceType = Column(Integer)
|
||||
isPrologue = Column(Integer)
|
||||
isEpilogue = Column(Integer)
|
||||
viewType = Column(Integer)
|
||||
updatedTime = Column(BigInteger)
|
||||
|
||||
previous = relationship("QuestScene", remote_side=[questSceneMstId])
|
||||
parts = relationship("QuestPart")
|
||||
|
||||
|
||||
class QuestPart(Base):
|
||||
__tablename__ = "QuestPartMstRecord"
|
||||
__table_args__ = {"schema": "QuestPart"}
|
||||
|
||||
questSceneMstId = Column(
|
||||
Integer,
|
||||
ForeignKey("QuestScene.QuestSceneMstRecord.questSceneMstId"),
|
||||
primary_key=True,
|
||||
) # now this is pod racing
|
||||
partNum = Column(Integer, primary_key=True)
|
||||
waveNum = Column(Integer)
|
||||
stamina = Column(Integer)
|
||||
exp = Column(Integer)
|
||||
expertPoint = Column(Integer)
|
||||
recommendLevel = Column(Integer)
|
||||
beforeTalkName = Column(String)
|
||||
afterTalkName = Column(String)
|
||||
battleBackgroundImg = Column(String)
|
||||
musicMstId = Column(Integer)
|
||||
isFixedDeck = Column(Integer)
|
||||
updatedTime = Column(BigInteger)
|
||||
def get_scenes(self):
|
||||
self.cursor.execute(
|
||||
"""
|
||||
SELECT
|
||||
questSceneMstId,
|
||||
name,
|
||||
summaryText,
|
||||
group_concat(partIds) as parts
|
||||
FROM (
|
||||
SELECT
|
||||
qs.questSceneMstId,
|
||||
qs.name,
|
||||
qs.summaryText,
|
||||
CASE
|
||||
WHEN qp.afterTalkName == '' AND qp.beforeTalkName == '' THEN NULL
|
||||
WHEN qp.afterTalkName == '' AND qp.beforeTalkName != '' THEN qp.beforeTalkName
|
||||
WHEN qp.afterTalkName != '' AND qp.beforeTalkName == '' THEN qp.afterTalkName
|
||||
ELSE qp.beforeTalkName || ',' || qp.afterTalkName
|
||||
END AS partIds
|
||||
FROM QuestScene.QuestSceneMstRecord qs
|
||||
INNER JOIN QuestPart.QuestPartMstRecord qp
|
||||
ON qs.questSceneMstId = qp.questSceneMstId
|
||||
WHERE (qp.beforeTalkName != "" OR qp.afterTalkName != "")
|
||||
)
|
||||
GROUP BY questSceneMstId
|
||||
"""
|
||||
)
|
||||
res = self.cursor.fetchall()
|
||||
scenes = {}
|
||||
for scene_id, name, summary, parts in res:
|
||||
scenes[scene_id] = {}
|
||||
scenes[scene_id]["Name"] = name
|
||||
scenes[scene_id]["SummaryText"] = summary
|
||||
scenes[scene_id]["Parts"] = parts.split(",")
|
||||
return scenes
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue