co3/co3/databases/sql.py

29 lines
948 B
Python

from co3.database import Database, Engine
from co3.accessors.sql import RelationalAccessor, SQLAccessor
from co3.managers.sql import RelationalManager, SQLManager
from co3.engines import SQLEngine
from co3.components import Relation, SQLTable
class RelationalDatabase[C: RelationR](Database):
'''
accessor/manager assignments satisfy supertype's type settings;
``TabluarAccessor[Self, C]`` is of type ``type[RelationalAccessor[Self, C]]``
(and yes, ``type[]`` specifies that the variable is itself being set to a type or a
class, rather than a satisfying _instance_)
'''
_accessor_cls: type[RelationalAccessor[C]] = RelationalAccessor[C]
_manager_cls: type[RelationalManager[C]] = RelationalManager[C]
class SQLDatabase[C: SQLTable](RelationalDatabase[C]):
_accessor_cls = SQLAccessor
_manager_cls = SQLManager
_engine_cls = SQLEngine
class SQLiteDatabase(SQLDatabase[SQLTable]):
pass