Skip to content
This repository has been archived by the owner on Jan 29, 2024. It is now read-only.

Update Flask-SQLAlchemy models to use 2.0 style #156

Merged
merged 2 commits into from Sep 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
40 changes: 23 additions & 17 deletions {{cookiecutter.__src_folder_name}}/src/db/postgres_models.py
Expand Up @@ -2,20 +2,26 @@
The postgres model definitions. If a 'postgres' option is selected,
this will be moved to `src/models.py`.
#}
from typing import List, Optional

from sqlalchemy import Column, ForeignKey, String
from sqlalchemy.orm import Mapped, mapped_column, relationship

from . import db

association_table = db.Table(
"cruise_destination_link",
db.Column("cruise_id", db.ForeignKey("cruise.id"), primary_key=True),
db.Column("destination_id", db.ForeignKey("destination.id"), primary_key=True),
Column("cruise_id", ForeignKey("cruise.id"), primary_key=True),
Column("destination_id", ForeignKey("destination.id"), primary_key=True),
)


class Destination(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(255), nullable=False)
subtitle = db.Column(db.String(255), nullable=True)
description = db.Column(db.String(1000), nullable=True)
cruises = db.relationship(
id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
name: Mapped[str] = mapped_column(String(255))
subtitle: Mapped[Optional[str]] = mapped_column(String(255))
description: Mapped[Optional[str]] = mapped_column(String(1000))
cruises: Mapped[List["Cruise"]] = relationship(
"Cruise", secondary=association_table, back_populates="destinations"
)

Expand All @@ -24,11 +30,11 @@ def __str__(self):


class Cruise(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(255), nullable=False)
subtitle = db.Column(db.String(255), nullable=True)
description = db.Column(db.String(1000), nullable=True)
destinations = db.relationship(
id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
name: Mapped[str] = mapped_column(String(255))
subtitle: Mapped[Optional[str]] = mapped_column(String(255))
description: Mapped[Optional[str]] = mapped_column(String(1000))
destinations: Mapped[List[Destination]] = relationship(
"Destination", secondary=association_table, back_populates="cruises"
)

Expand All @@ -37,8 +43,8 @@ def __str__(self):


class InfoRequest(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(255), nullable=False)
email = db.Column(db.String(255), nullable=False)
notes = db.Column(db.String(255), nullable=False)
cruise_id = db.Column(db.Integer, nullable=False)
id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
name: Mapped[str] = mapped_column(String(255))
email: Mapped[str] = mapped_column(String(255))
notes: Mapped[str] = mapped_column(String(255))
cruise_id: Mapped[int] = mapped_column(ForeignKey("cruise.id"))
Expand Up @@ -8,14 +8,19 @@
{% if 'postgres' in cookiecutter.db_resource %}
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.orm import DeclarativeBase
{% endif %}
from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.ext.flask.flask_middleware import FlaskMiddleware
from opencensus.trace.samplers import ProbabilitySampler


{% if 'postgres' in cookiecutter.db_resource %}
db = SQLAlchemy()
class BaseModel(DeclarativeBase):
pass


db = SQLAlchemy(model_class=BaseModel)
migrate = Migrate()
{% endif %}

Expand Down
Expand Up @@ -15,12 +15,7 @@


def get_engine():
try:
# this works with Flask-SQLAlchemy<3 and Alchemical
return current_app.extensions["migrate"].db.get_engine()
except TypeError:
# this works with Flask-SQLAlchemy>=3
return current_app.extensions["migrate"].db.engine
return current_app.extensions["migrate"].db.engine


def get_engine_url():
Expand Down
Expand Up @@ -10,7 +10,7 @@ dependencies = [
"SQLAlchemy==2.0.17",
"psycopg2-binary==2.9.6",
"Flask-Migrate==4.0.4",
"Flask-SQLAlchemy==3.0.5",
"Flask-SQLAlchemy==3.1.1",
{% endif %}
{% if 'mongodb' in cookiecutter.db_resource %}
"mongoengine==0.27.0",
Expand Down