Skip to content

table_base

Base class for table definitions.

TableBase

Base class for Table classes.

The split between Table and TableBase is a bit arbitrary, mostly dictated by preventing circular imports.

Source code in src/embar/table_base.py
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class TableBase:
    """
    Base class for `Table` classes.

    The split between `Table` and `TableBase` is a bit arbitrary, mostly
    dictated by preventing circular imports.
    """

    embar_config: EmbarConfig = Undefined
    _fields: ClassVar[dict[str, ColumnBase]]

    @classmethod
    def get_name(cls) -> str:
        """
        Get the table's _database_ name.
        """
        return cls.embar_config.table_name

    @classmethod
    def fqn(cls) -> str:
        """
        Get the "Fully Qualified Name" of the table (i.e. with quotes).
        """
        return f'"{cls.embar_config.table_name}"'

    @classmethod
    def column_names(cls) -> dict[str, str]:
        """
        Mapping of field names to _unquoted_ column names.

        Column names are allowed to be different to field names, so in queries
        we always need to map one to/from the other.
        """
        cols = {name: col.info.name for name, col in cls._fields.items()}
        return cols

column_names() classmethod

Mapping of field names to unquoted column names.

Column names are allowed to be different to field names, so in queries we always need to map one to/from the other.

Source code in src/embar/table_base.py
35
36
37
38
39
40
41
42
43
44
@classmethod
def column_names(cls) -> dict[str, str]:
    """
    Mapping of field names to _unquoted_ column names.

    Column names are allowed to be different to field names, so in queries
    we always need to map one to/from the other.
    """
    cols = {name: col.info.name for name, col in cls._fields.items()}
    return cols

fqn() classmethod

Get the "Fully Qualified Name" of the table (i.e. with quotes).

Source code in src/embar/table_base.py
28
29
30
31
32
33
@classmethod
def fqn(cls) -> str:
    """
    Get the "Fully Qualified Name" of the table (i.e. with quotes).
    """
    return f'"{cls.embar_config.table_name}"'

get_name() classmethod

Get the table's database name.

Source code in src/embar/table_base.py
21
22
23
24
25
26
@classmethod
def get_name(cls) -> str:
    """
    Get the table's _database_ name.
    """
    return cls.embar_config.table_name