Skip to content

Commit f6171e6

Browse files
user create and get api created
1 parent 02d5fa3 commit f6171e6

File tree

5 files changed

+123
-19
lines changed

5 files changed

+123
-19
lines changed

BaseApp/UserApp/models.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
1-
from sqlalchemy import Boolean, Column, Integer, String, DateTime
2-
import datetime
1+
from sqlalchemy import Boolean, Column, Integer, String
32
from BaseApp.database import Base
43

54

5+
# Create database models
6+
67
class User(Base):
78
__tablename__ = "users"
89
id = Column(Integer, primary_key=True)
9-
fullname = Column(String)
10-
created_date = Column(DateTime, default=datetime.datetime.utcnow)
11-
username = Column(String, unique=True)
12-
hashed_password = Column(String)
13-
is_active = Column(Boolean, default=True)
14-
is_delete = Column(Boolean, default=False)
10+
first_name = Column(String(50), nullable=True)
11+
last_name = Column(String(50), nullable=True)
12+
username = Column(String(100), unique=True, nullable=False)
13+
email = Column(String(100), unique=True, nullable=False)
14+
password = Column(String(200), nullable=False)
15+
is_active = Column(Boolean, default=True, nullable=False)
16+
is_verify = Column(Boolean, default=True, nullable=False)
17+
is_delete = Column(Boolean, default=False, nullable=False)
18+
created_on = Column(String(100), nullable=True)
19+
updated_on = Column(String(100), nullable=True)
20+
21+
def __repr__(self):
22+
return 'User : %r' % self.username

BaseApp/UserApp/router.py

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,31 @@
11
from fastapi import Depends, APIRouter, HTTPException, status
2-
from BaseApp.UserApp import schemas
2+
from sqlalchemy.orm import Session
3+
from BaseApp.dependencies import get_db
4+
from BaseApp.UserApp.schemas import UserCreateSchema
5+
from BaseApp.UserApp.models import User
6+
import datetime
37

48
api = APIRouter()
59

610

7-
@api.get("/index")
8-
def index():
9-
return {"key": "value"}
11+
@api.get("/users")
12+
def users(db: Session = Depends(get_db)):
13+
data = db.query(User).all()
14+
return data
15+
16+
17+
@api.post("/create-user")
18+
def registerUser(userData: UserCreateSchema, db: Session = Depends(get_db)):
19+
dateTime = str(datetime.datetime.timestamp(datetime.datetime.now()))
20+
userObj = User(
21+
first_name=userData.first_name,
22+
last_name=userData.last_name,
23+
username=userData.username,
24+
email=userData.email,
25+
password=userData.password,
26+
created_on=dateTime,
27+
updated_on=dateTime
28+
)
29+
db.add(userObj)
30+
db.commit()
31+
return {"status": "User created"}

BaseApp/UserApp/schemas.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
from pydantic import BaseModel
2-
from typing import Optional
3-
import datetime
4-
from fastapi import Body
52

63

7-
class User(BaseModel):
4+
class UserCreateSchema(BaseModel):
5+
first_name: str
6+
last_name: str
87
username: str
8+
email: str
9+
password: str
910

1011

11-
class UserCreate(User):
12-
password: str
13-
email: str

BaseApp/dependencies.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from BaseApp.database import SessionLocal
2+
3+
4+
# Dependency
5+
def get_db():
6+
db = SessionLocal()
7+
try:
8+
yield db
9+
finally:
10+
db.close()
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
"""user model updated all
2+
3+
Revision ID: 12db141fd663
4+
Revises: e97c745d015f
5+
Create Date: 2021-06-10 16:09:54.818509
6+
7+
"""
8+
from alembic import op
9+
import sqlalchemy as sa
10+
from sqlalchemy.dialects import postgresql
11+
12+
# revision identifiers, used by Alembic.
13+
revision = '12db141fd663'
14+
down_revision = 'e97c745d015f'
15+
branch_labels = None
16+
depends_on = None
17+
18+
19+
def upgrade():
20+
# ### commands auto generated by Alembic - please adjust! ###
21+
op.add_column('users', sa.Column('first_name', sa.String(length=50), nullable=True))
22+
op.add_column('users', sa.Column('last_name', sa.String(length=50), nullable=True))
23+
op.add_column('users', sa.Column('email', sa.String(length=100), nullable=False))
24+
op.add_column('users', sa.Column('password', sa.String(length=200), nullable=False))
25+
op.add_column('users', sa.Column('is_verify', sa.Boolean(), nullable=False))
26+
op.add_column('users', sa.Column('created_on', sa.String(length=100), nullable=True))
27+
op.add_column('users', sa.Column('updated_on', sa.String(length=100), nullable=True))
28+
op.alter_column('users', 'username',
29+
existing_type=sa.VARCHAR(),
30+
nullable=False)
31+
op.alter_column('users', 'is_active',
32+
existing_type=sa.BOOLEAN(),
33+
nullable=False)
34+
op.alter_column('users', 'is_delete',
35+
existing_type=sa.BOOLEAN(),
36+
nullable=False)
37+
op.create_unique_constraint(None, 'users', ['email'])
38+
op.drop_column('users', 'hashed_password')
39+
op.drop_column('users', 'fullname')
40+
op.drop_column('users', 'created_date')
41+
# ### end Alembic commands ###
42+
43+
44+
def downgrade():
45+
# ### commands auto generated by Alembic - please adjust! ###
46+
op.add_column('users', sa.Column('created_date', postgresql.TIMESTAMP(), autoincrement=False, nullable=True))
47+
op.add_column('users', sa.Column('fullname', sa.VARCHAR(), autoincrement=False, nullable=True))
48+
op.add_column('users', sa.Column('hashed_password', sa.VARCHAR(), autoincrement=False, nullable=True))
49+
op.drop_constraint(None, 'users', type_='unique')
50+
op.alter_column('users', 'is_delete',
51+
existing_type=sa.BOOLEAN(),
52+
nullable=True)
53+
op.alter_column('users', 'is_active',
54+
existing_type=sa.BOOLEAN(),
55+
nullable=True)
56+
op.alter_column('users', 'username',
57+
existing_type=sa.VARCHAR(),
58+
nullable=True)
59+
op.drop_column('users', 'updated_on')
60+
op.drop_column('users', 'created_on')
61+
op.drop_column('users', 'is_verify')
62+
op.drop_column('users', 'password')
63+
op.drop_column('users', 'email')
64+
op.drop_column('users', 'last_name')
65+
op.drop_column('users', 'first_name')
66+
# ### end Alembic commands ###

0 commit comments

Comments
 (0)