work
This commit is contained in:
33
migration/versions/16041bfd2411_initial.py
Normal file
33
migration/versions/16041bfd2411_initial.py
Normal 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 ###
|
||||||
13
notes.txt
13
notes.txt
@@ -1,5 +1,16 @@
|
|||||||
export PYTHONPATH='/home/dd/astra/personal_information/src'
|
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 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
|
docker exec -it personal_info_db bash
|
||||||
psql -U barbie -d barbie
|
psql -U barbie -d barbie
|
||||||
CREATE DATABASE personal_info_db;
|
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
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ def create_app() -> FastAPI:
|
|||||||
|
|
||||||
from personal_info.routers import persons
|
from personal_info.routers import persons
|
||||||
|
|
||||||
app.include(persons.router)
|
app.include_router(persons.router)
|
||||||
|
|
||||||
return app
|
return app
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
from os import getenv
|
||||||
from pydantic import BaseSettings, PostgresDsn
|
from pydantic import BaseSettings, PostgresDsn
|
||||||
|
|
||||||
class Settings(BaseSettings):
|
class Settings(BaseSettings):
|
||||||
@@ -11,5 +11,23 @@ def get_settings() -> Settings:
|
|||||||
settings = Settings() # type: ignore
|
settings = Settings() # type: ignore
|
||||||
print('333333333333333333333333333333333333333333')
|
print('333333333333333333333333333333333333333333')
|
||||||
print(settings)
|
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
|
#CONTINUE
|
||||||
return settings
|
return settings
|
||||||
@@ -9,8 +9,14 @@ class Person(BaseModel):
|
|||||||
first_name: str
|
first_name: str
|
||||||
last_name: str
|
last_name: str
|
||||||
|
|
||||||
class PersonCreate(Person):
|
class Config:
|
||||||
pass
|
orm_mode = True
|
||||||
|
|
||||||
|
class PersonCreate(BaseModel):
|
||||||
|
first_name: str
|
||||||
|
last_name: str
|
||||||
|
|
||||||
class PersonDetail(Person):
|
class PersonDetail(Person):
|
||||||
pass
|
id: UUID4
|
||||||
|
first_name: str
|
||||||
|
last_name: str
|
||||||
@@ -1,17 +1,20 @@
|
|||||||
from fastapi import Depends
|
from fastapi import Depends
|
||||||
from fastapi.routing import APIRouter
|
from fastapi.routing import APIRouter
|
||||||
from pydantic.types import UUID4
|
from pydantic.types import UUID4
|
||||||
|
from typing import List, Optional
|
||||||
|
|
||||||
from personal_info.db import models
|
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
|
from personal_info.services import PersonService, get_persons_service
|
||||||
|
|
||||||
router = APIrouter(prefix='/people')
|
router = APIRouter(prefix='/persons')
|
||||||
|
|
||||||
@router.get('/', response_model=List[Person])
|
@router.get('/', response_model=List[Person])
|
||||||
async def list_persons(
|
async def list_persons(
|
||||||
persons_service: PersonService = Depends(get_persons_service),
|
persons_service: PersonService = Depends(get_persons_service),
|
||||||
) -> List[models.Person]:
|
) -> List[models.Person]:
|
||||||
|
print('=======================================')
|
||||||
|
print(persons_service.list())
|
||||||
return persons_service.list()
|
return persons_service.list()
|
||||||
|
|
||||||
@router.get('/{person_id}', response_model=PersonDetail)
|
@router.get('/{person_id}', response_model=PersonDetail)
|
||||||
|
|||||||
@@ -11,9 +11,10 @@ class PersonService(BaseService[Person, PersonCreate, Any]):
|
|||||||
def __init__(self, db_session: Session):
|
def __init__(self, db_session: Session):
|
||||||
super(PersonService, self).__init__(Person, db_session)
|
super(PersonService, self).__init__(Person, db_session)
|
||||||
|
|
||||||
def create(self, obj: PersonCreate) -> Person:
|
# def create(self, obj: PersonCreate) -> Person:
|
||||||
person: Person = Person()
|
|
||||||
self.db_session.add(person)
|
# person: Person = Person()
|
||||||
self.db_session.flush()
|
# self.db_session.add(person)
|
||||||
self.db_session.commit()
|
# self.db_session.flush()
|
||||||
return person
|
# self.db_session.commit()
|
||||||
|
# return person
|
||||||
|
|||||||
Reference in New Issue
Block a user