Skip to content

Commit

Permalink
Add building of one or more views from dictionaries
Browse files Browse the repository at this point in the history
  • Loading branch information
Mike committed Oct 15, 2023
1 parent 7c1fb04 commit d4ab069
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 21 deletions.
29 changes: 10 additions & 19 deletions src/hdx/database/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
Copied from:
https://github.com/sqlalchemy/sqlalchemy/wiki/Views#sqlalchemy-14-20-version
"""
from dataclasses import dataclass
from typing import List
from typing import Dict, List

import sqlalchemy as sa
from sqlalchemy import MetaData, Selectable, TableClause
Expand Down Expand Up @@ -76,33 +75,25 @@ def view(name: str, metadata: MetaData, selectable: Selectable) -> TableClause:
return t


@dataclass
class ViewParams:
"""Class for keeping view constructor parameters."""

name: str
metadata: MetaData
selectable: Selectable


def build_view(view_params: ViewParams) -> TableClause:
"""Create SQLAlchemy view
def build_view(view_params: Dict) -> TableClause:
"""Create SQLAlchemy view from dictionary with keys: name, metadata and
selectable
Args:
view_params (ViewParams): ViewParams object
view_params (Dict): Dictionary with keys name, metadata, selectable
Returns:
TableClause: SQLAlchemy View
"""
return view(**view_params.__dict__)
return view(**view_params)


def build_views(view_params_list: List[ViewParams]) -> List[TableClause]:
"""Create SQLAlchemy views from a list of ViewParams objects
def build_views(view_params_list: List[Dict]) -> List[TableClause]:
"""Create SQLAlchemy views from a list of dictionaries with keys: name,
metadata and selectable
Args:
view_params_list (List[ViewParams]): List of ViewParams objects
view_params_list (List[Dict]): List of dictionaries with view parameters
Returns:
List[TableClause]: SQLAlchemy Views
"""
Expand Down
4 changes: 2 additions & 2 deletions tests/hdx/database/dbtestdate.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from sqlalchemy.orm import Mapped, mapped_column

from hdx.database.no_timezone import Base
from hdx.database.views import ViewParams, build_views
from hdx.database.views import build_views


class DBTestDate(Base):
Expand All @@ -25,7 +25,7 @@ def __repr__(self) -> str:
return f"<Test date={str(self.test_date)}>"


date_view_params = ViewParams(
date_view_params = dict(
name="date_view",
metadata=Base.metadata,
selectable=select(*DBTestDate.__table__.columns),
Expand Down

0 comments on commit d4ab069

Please sign in to comment.