Source code for acore_df.model

# -*- coding: utf-8 -*-

import typing as T
import dataclasses
from pathlib import Path

import sqlalchemy as sa
import sqlalchemy.orm as orm

from .paths import path_sqlite
from .dataset import BaseDataset, download_sqlite

Base = orm.declarative_base()



[docs]class ItemTemplateClass(Base): __tablename__ = "item_template_class" id: orm.Mapped[int] = sa.Column(sa.Integer, primary_key=True) name: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) name_cn: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True)
[docs]@dataclasses.dataclass class ItemTemplateClassData: id: int = dataclasses.field() name: T.Optional[str] = dataclasses.field(default=None) name_cn: T.Optional[str] = dataclasses.field(default=None)
[docs]class ItemTemplateSubclass(Base): __tablename__ = "item_template_subclass" id: orm.Mapped[str] = sa.Column(sa.String, primary_key=True) class_id: orm.Mapped[T.Optional[int]] = sa.Column(sa.Integer, nullable=True) class_name: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) class_name_cn: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) subclass_id: orm.Mapped[T.Optional[int]] = sa.Column(sa.Integer, nullable=True) subclass_name: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) subclass_name_cn: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) comments: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True)
[docs]@dataclasses.dataclass class ItemTemplateSubclassData: id: str = dataclasses.field() class_id: T.Optional[int] = dataclasses.field(default=None) class_name: T.Optional[str] = dataclasses.field(default=None) class_name_cn: T.Optional[str] = dataclasses.field(default=None) subclass_id: T.Optional[int] = dataclasses.field(default=None) subclass_name: T.Optional[str] = dataclasses.field(default=None) subclass_name_cn: T.Optional[str] = dataclasses.field(default=None) comments: T.Optional[str] = dataclasses.field(default=None)
[docs]class ItemTemplateQuality(Base): __tablename__ = "item_template_quality" id: orm.Mapped[int] = sa.Column(sa.Integer, primary_key=True) color: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) name: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) name_cn: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True)
[docs]@dataclasses.dataclass class ItemTemplateQualityData: id: int = dataclasses.field() color: T.Optional[str] = dataclasses.field(default=None) name: T.Optional[str] = dataclasses.field(default=None) name_cn: T.Optional[str] = dataclasses.field(default=None)
[docs]class ItemTemplateBonding(Base): __tablename__ = "item_template_bonding" id: orm.Mapped[int] = sa.Column(sa.Integer, primary_key=True) name: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) name_cn: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) abbr: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True)
[docs]@dataclasses.dataclass class ItemTemplateBondingData: id: int = dataclasses.field() name: T.Optional[str] = dataclasses.field(default=None) name_cn: T.Optional[str] = dataclasses.field(default=None) abbr: T.Optional[str] = dataclasses.field(default=None)
[docs]class ItemTemplateAllowableClass(Base): __tablename__ = "item_template_allowable_class" id: orm.Mapped[int] = sa.Column(sa.Integer, primary_key=True) name: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) name_cn: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True)
[docs]@dataclasses.dataclass class ItemTemplateAllowableClassData: id: int = dataclasses.field() name: T.Optional[str] = dataclasses.field(default=None) name_cn: T.Optional[str] = dataclasses.field(default=None)
[docs]class ItemTemplateStatType(Base): __tablename__ = "item_template_stat_type" id: orm.Mapped[int] = sa.Column(sa.Integer, primary_key=True) type_name: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) name: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) name_cn: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) name_abbr: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) name_abbr_cn: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) description: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True)
[docs]@dataclasses.dataclass class ItemTemplateStatTypeData: id: int = dataclasses.field() type_name: T.Optional[str] = dataclasses.field(default=None) name: T.Optional[str] = dataclasses.field(default=None) name_cn: T.Optional[str] = dataclasses.field(default=None) name_abbr: T.Optional[str] = dataclasses.field(default=None) name_abbr_cn: T.Optional[str] = dataclasses.field(default=None) description: T.Optional[str] = dataclasses.field(default=None)
[docs]class ItemTemplateDamageType(Base): __tablename__ = "item_template_damage_type" id: orm.Mapped[int] = sa.Column(sa.Integer, primary_key=True) name: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) name_cn: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True)
[docs]@dataclasses.dataclass class ItemTemplateDamageTypeData: id: int = dataclasses.field() name: T.Optional[str] = dataclasses.field(default=None) name_cn: T.Optional[str] = dataclasses.field(default=None)
[docs]class Factions(Base): __tablename__ = "factions" faction_id: orm.Mapped[int] = sa.Column(sa.Integer, primary_key=True) sort_key: orm.Mapped[T.Optional[int]] = sa.Column(sa.Integer, nullable=True) expansion: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) type: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) name: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) description: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True) reward: orm.Mapped[T.Optional[str]] = sa.Column(sa.String, nullable=True)
[docs]@dataclasses.dataclass class FactionsData: faction_id: int = dataclasses.field() sort_key: T.Optional[int] = dataclasses.field(default=None) expansion: T.Optional[str] = dataclasses.field(default=None) type: T.Optional[str] = dataclasses.field(default=None) name: T.Optional[str] = dataclasses.field(default=None) description: T.Optional[str] = dataclasses.field(default=None) reward: T.Optional[str] = dataclasses.field(default=None)
dataset_mapping = { "item_template_class": { "orm_class": ItemTemplateClass, "data_class": ItemTemplateClassData, "id_col": "id", }, "item_template_subclass": { "orm_class": ItemTemplateSubclass, "data_class": ItemTemplateSubclassData, "id_col": "id", }, "item_template_quality": { "orm_class": ItemTemplateQuality, "data_class": ItemTemplateQualityData, "id_col": "id", }, "item_template_bonding": { "orm_class": ItemTemplateBonding, "data_class": ItemTemplateBondingData, "id_col": "id", }, "item_template_allowable_class": { "orm_class": ItemTemplateAllowableClass, "data_class": ItemTemplateAllowableClassData, "id_col": "id", }, "item_template_stat_type": { "orm_class": ItemTemplateStatType, "data_class": ItemTemplateStatTypeData, "id_col": "id", }, "item_template_damage_type": { "orm_class": ItemTemplateDamageType, "data_class": ItemTemplateDamageTypeData, "id_col": "id", }, "factions": { "orm_class": Factions, "data_class": FactionsData, "id_col": "faction_id", }, }
[docs]@dataclasses.dataclass class ItemTemplateClassDataset( BaseDataset[ItemTemplateClass, ItemTemplateClassData] ): pass
[docs]@dataclasses.dataclass class ItemTemplateSubclassDataset( BaseDataset[ItemTemplateSubclass, ItemTemplateSubclassData] ): pass
[docs]@dataclasses.dataclass class ItemTemplateQualityDataset( BaseDataset[ItemTemplateQuality, ItemTemplateQualityData] ): pass
[docs]@dataclasses.dataclass class ItemTemplateBondingDataset( BaseDataset[ItemTemplateBonding, ItemTemplateBondingData] ): pass
[docs]@dataclasses.dataclass class ItemTemplateAllowableClassDataset( BaseDataset[ItemTemplateAllowableClass, ItemTemplateAllowableClassData] ): pass
[docs]@dataclasses.dataclass class ItemTemplateStatTypeDataset( BaseDataset[ItemTemplateStatType, ItemTemplateStatTypeData] ): pass
[docs]@dataclasses.dataclass class ItemTemplateDamageTypeDataset( BaseDataset[ItemTemplateDamageType, ItemTemplateDamageTypeData] ): pass
[docs]@dataclasses.dataclass class FactionsDataset( BaseDataset[Factions, FactionsData] ): pass
[docs]@dataclasses.dataclass class Lookup: """ The main API to access the acore dataframe data. Useful methods are: - :meth:`Lookup.${dataset_name}.get <acore_df.dataset.BaseDataset.get>` - :meth:`Lookup.${dataset_name}.get_by_kvs <acore_df.dataset.BaseDataset.get_by_kvs>` - :meth:`Lookup.${dataset_name}.df <acore_df.dataset.BaseDataset.df>` - :meth:`Lookup.${dataset_name}.row_map <acore_df.dataset.BaseDataset.row_map>` - :meth:`Lookup.${dataset_name}.name <acore_df.dataset.BaseDataset>` - :meth:`Lookup.${dataset_name}.id_col <acore_df.dataset.BaseDataset>` - :meth:`Lookup.${dataset_name}.orm_model <acore_df.dataset.BaseDataset>` - :meth:`Lookup.${dataset_name}.orm_table <acore_df.dataset.BaseDataset>` - :meth:`Lookup.${dataset_name}.data_class <acore_df.dataset.BaseDataset>` - :meth:`Lookup.${dataset_name}.engine <acore_df.dataset.BaseDataset>` """ engine: sa.Engine = dataclasses.field() item_template_class: ItemTemplateClassDataset = dataclasses.field() item_template_subclass: ItemTemplateSubclassDataset = dataclasses.field() item_template_quality: ItemTemplateQualityDataset = dataclasses.field() item_template_bonding: ItemTemplateBondingDataset = dataclasses.field() item_template_allowable_class: ItemTemplateAllowableClassDataset = dataclasses.field() item_template_stat_type: ItemTemplateStatTypeDataset = dataclasses.field() item_template_damage_type: ItemTemplateDamageTypeDataset = dataclasses.field() factions: FactionsDataset = dataclasses.field() @classmethod def new(cls, path_sqlite: Path = path_sqlite): if path_sqlite.exists() is False: download_sqlite(path_sqlite=path_sqlite) engine = sa.create_engine(f"sqlite:///{path_sqlite}") return cls( engine=engine, item_template_class=ItemTemplateClassDataset( name="item_template_class", id_col="id", orm_model=ItemTemplateClass, orm_table=ItemTemplateClass.__table__, data_class=ItemTemplateClassData, engine=engine, ), item_template_subclass=ItemTemplateSubclassDataset( name="item_template_subclass", id_col="id", orm_model=ItemTemplateSubclass, orm_table=ItemTemplateSubclass.__table__, data_class=ItemTemplateSubclassData, engine=engine, ), item_template_quality=ItemTemplateQualityDataset( name="item_template_quality", id_col="id", orm_model=ItemTemplateQuality, orm_table=ItemTemplateQuality.__table__, data_class=ItemTemplateQualityData, engine=engine, ), item_template_bonding=ItemTemplateBondingDataset( name="item_template_bonding", id_col="id", orm_model=ItemTemplateBonding, orm_table=ItemTemplateBonding.__table__, data_class=ItemTemplateBondingData, engine=engine, ), item_template_allowable_class=ItemTemplateAllowableClassDataset( name="item_template_allowable_class", id_col="id", orm_model=ItemTemplateAllowableClass, orm_table=ItemTemplateAllowableClass.__table__, data_class=ItemTemplateAllowableClassData, engine=engine, ), item_template_stat_type=ItemTemplateStatTypeDataset( name="item_template_stat_type", id_col="id", orm_model=ItemTemplateStatType, orm_table=ItemTemplateStatType.__table__, data_class=ItemTemplateStatTypeData, engine=engine, ), item_template_damage_type=ItemTemplateDamageTypeDataset( name="item_template_damage_type", id_col="id", orm_model=ItemTemplateDamageType, orm_table=ItemTemplateDamageType.__table__, data_class=ItemTemplateDamageTypeData, engine=engine, ), factions=FactionsDataset( name="factions", id_col="faction_id", orm_model=Factions, orm_table=Factions.__table__, data_class=FactionsData, engine=engine, ), )