Skip to content

Commit

Permalink
Add User and Role models and update db init
Browse files Browse the repository at this point in the history
  • Loading branch information
mslwang committed Oct 3, 2024
1 parent 7f56c2f commit 42c8c76
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 19 deletions.
4 changes: 4 additions & 0 deletions backend/app/models/Base.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from sqlalchemy.orm import registry

mapper_registry = registry()
Base = mapper_registry.generate_base()
9 changes: 9 additions & 0 deletions backend/app/models/Role.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@

from sqlalchemy import Column, Integer, String
from .Base import Base


class Role(Base):
__tablename__ = "roles"
id = Column(Integer, primary_key=True)
name = Column(String(80), nullable=False)
14 changes: 14 additions & 0 deletions backend/app/models/User.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from sqlalchemy import Column, ForeignKey, Integer, String
from sqlalchemy.orm import relationship
from .Base import Base


class User(Base):
__tablename__ = "users"
id = Column(String, primary_key=True) # UUID
first_name = Column(String(80), nullable=True)
last_name = Column(String(80), nullable=True)
email = Column(String(120), unique=True, nullable=False)
role_id = Column(Integer, ForeignKey("roles.id"))

role = relationship("Role")
32 changes: 13 additions & 19 deletions backend/app/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,13 @@
from sqlalchemy import SQLAlchemy

db = SQLAlchemy()


def init_app(app):

app.app_context().push()
db.init_app(app)

erase_db_and_sync = app.config["TESTING"]

if erase_db_and_sync:
# drop tables
db.reflect()
db.drop_all()

# recreate tables
db.create_all()
import os
from sqlalchemy import create_engine
from dotenv import load_dotenv
load_dotenv()

from .Base import Base
from .User import User
from .Role import Role
__all__ = ["User", "Role"]

def init_app():
engine = create_engine(os.environ["POSTGRES_DATABASE_URL"])
Base.metadata.create_all(bind=engine)
4 changes: 4 additions & 0 deletions backend/app/server.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
from dotenv import load_dotenv
from typing import Union
from fastapi import FastAPI
from . import models

load_dotenv()

app = FastAPI()
models.init_app()


@app.get("/")
def read_root():
Expand Down

0 comments on commit 42c8c76

Please sign in to comment.