This commit is contained in:
dderbentsov
2023-07-13 02:14:21 +03:00
parent bc339cefb9
commit 322f14c096
7 changed files with 86 additions and 14 deletions

View File

@@ -0,0 +1,33 @@
"""initial
Revision ID: 16041bfd2411
Revises:
Create Date: 2023-07-13 01:26:56.342068
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '16041bfd2411'
down_revision = None
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('people',
sa.Column('id', sa.UUID(), nullable=False),
sa.Column('first_name', sa.Text(), nullable=False),
sa.Column('last_name', sa.Text(), nullable=False),
sa.PrimaryKeyConstraint('id')
)
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('people')
# ### end Alembic commands ###

View File

@@ -1,5 +1,16 @@
export PYTHONPATH='/home/dd/astra/personal_information/src'
export POSTGRES_DB='personal_info_db'
docker run -itd -e POSTGRES_USER=barbie -e POSTGRES_PASSWORD=redStar4,1 -p 5432:5432 -v /home/dd/astra/postgresql_db:/var/lib/postgresql/data --name personal_info_db postgres
docker exec -it personal_info_db bash
psql -U barbie -d barbie
CREATE DATABASE personal_info_db;
alembic revision --autogenerate -m 'initial'
alembic init alembic
в alembic.ini правим sqlalchemy.url
alembic revision -m "add columns to checkup table"
alembic upgrade ae1 (можно часть версии, лишь бы однозначно указывала)
uvicorn --reload --port 8000 personal_info.main:app

View File

@@ -14,6 +14,6 @@ def create_app() -> FastAPI:
from personal_info.routers import persons
app.include(persons.router)
app.include_router(persons.router)
return app

View File

@@ -1,6 +1,6 @@
from functools import lru_cache
from typing import Optional
from os import getenv
from pydantic import BaseSettings, PostgresDsn
class Settings(BaseSettings):
@@ -11,5 +11,23 @@ def get_settings() -> Settings:
settings = Settings() # type: ignore
print('333333333333333333333333333333333333333333')
print(settings)
print(getenv("POSTGRES_DB"))
if (db := getenv("POSTGRES_DB")) is not None:
# settings.database_url = PostgresDsn.build(
# scheme="postgresql",
# user=settings.database_url.user,
# password=settings.database_url.password,
# host=settings.database_url.host,
# port=settings.database_url.port,
# path=f"/{db}",
# )
settings.database_url = PostgresDsn.build(
scheme="postgresql",
user='barbie',
password='redStar4,1',
host='localhost',
port='5432',
path=f"/{db}",
)
#CONTINUE
return settings

View File

@@ -9,8 +9,14 @@ class Person(BaseModel):
first_name: str
last_name: str
class PersonCreate(Person):
pass
class Config:
orm_mode = True
class PersonCreate(BaseModel):
first_name: str
last_name: str
class PersonDetail(Person):
pass
id: UUID4
first_name: str
last_name: str

View File

@@ -1,17 +1,20 @@
from fastapi import Depends
from fastapi.routing import APIRouter
from pydantic.types import UUID4
from typing import List, Optional
from personal_info.db import models
from personal_info.db.schemas import Person, PersonDetail
from personal_info.db.schemas import Person, PersonDetail, PersonCreate
from personal_info.services import PersonService, get_persons_service
router = APIrouter(prefix='/people')
router = APIRouter(prefix='/persons')
@router.get('/', response_model=List[Person])
async def list_persons(
persons_service: PersonService = Depends(get_persons_service),
) -> List[models.Person]:
print('=======================================')
print(persons_service.list())
return persons_service.list()
@router.get('/{person_id}', response_model=PersonDetail)

View File

@@ -11,9 +11,10 @@ class PersonService(BaseService[Person, PersonCreate, Any]):
def __init__(self, db_session: Session):
super(PersonService, self).__init__(Person, db_session)
def create(self, obj: PersonCreate) -> Person:
person: Person = Person()
self.db_session.add(person)
self.db_session.flush()
self.db_session.commit()
return person
# def create(self, obj: PersonCreate) -> Person:
# person: Person = Person()
# self.db_session.add(person)
# self.db_session.flush()
# self.db_session.commit()
# return person