Commit adf27ab2 authored by xianyang's avatar xianyang

用户模型创建,用户添加

parent d5a3f3a1
from datetime import datetime
from sqlalchemy.orm import Session
from app.api.users import schemas
from libs.functions import md5
from models import users as models
......@@ -8,8 +11,8 @@ def get_user(db: Session, user_id: int):
return db.query(models.User).filter(models.User.id == user_id).first()
def get_user_by_email(db: Session, email: str):
return db.query(models.User).filter(models.User.email == email).first()
def get_user_by_name(db: Session, username: str):
return db.query(models.User).filter(models.User.username == username).first()
def get_users(db: Session, skip: int = 0, limit: int = 100):
......@@ -17,21 +20,9 @@ def get_users(db: Session, skip: int = 0, limit: int = 100):
def create_user(db: Session, user: schemas.UserCreate):
fake_hashed_password = user.password + "notreallyhashed"
db_user = models.User(email=user.email, hashed_password=fake_hashed_password)
db_user = models.User(username=user.username, description=user.description, unique=user.unique,
config_key=user.config_key, hashed_password=md5(user.password), create_time=datetime.now())
db.add(db_user)
db.commit()
db.refresh(db_user)
return db_user
def get_items(db: Session, skip: int = 0, limit: int = 100):
return db.query(models.Item).offset(skip).limit(limit).all()
# def create_user_item(db: Session, item: schemas.ItemCreate, user_id: int):
# db_item = models.Item(**item.dict(), owner_id=user_id)
# db.add(db_item)
# db.commit()
# db.refresh(db_item)
# return db_item
\ No newline at end of file
......@@ -2,16 +2,18 @@ from pydantic import BaseModel
class UserBase(BaseModel):
email: str
username: str
class UserCreate(UserBase):
password: str
unique: str
description: str
config_key: str
class User(UserBase):
id: int
is_active: bool
class Config:
orm_mode = True
\ No newline at end of file
orm_mode = True
from typing import List
from fastapi import Depends, APIRouter, HTTPException, FastAPI
from fastapi.security import OAuth2PasswordRequestForm
from sqlalchemy.orm import Session
import models
from app.api.users import crud, schemas
from models import users
from core.storage.db import SessionLocal
# models.Base.metadata.create_all(bind=engine)
router = APIRouter()
# Dependency
def get_db():
db = SessionLocal()
try:
......@@ -19,13 +17,12 @@ def get_db():
finally:
db.close()
@router.post("/", response_model=schemas.User)
def create_user(user: schemas.UserCreate, db: Session = Depends(get_db)):
db_user = crud.get_user_by_email(db, email=user.email)
if db_user:
raise HTTPException(status_code=400, detail="Email already registered")
return crud.create_user(db=db, user=user)
# @router.post("/", response_model=schemas.User)
# def create_user(user: schemas.UserCreate, db: Session = Depends(get_db)):
# db_user = crud.get_user_by_email(db, email=user.email)
# if db_user:
# raise HTTPException(status_code=400, detail="Email already registered")
# return crud.create_user(db=db, user=user)
@router.get("/", response_model=List[schemas.User])
......@@ -42,7 +39,32 @@ def read_user(user_id: int, db: Session = Depends(get_db)):
return db_user
@router.post("/login", tags=["POST"])
def login():
"""
OAuth2 compatible token login, get an access token for future requests.
"""
# bucket = get_default_bucket()
# user = crud.user.authenticate(
# bucket, username=form_data.username, password=form_data.password
# )
# if not user:
# raise HTTPException(status_code=400, detail="Incorrect email or password")
# elif not crud.user.is_active(user):
# raise HTTPException(status_code=400, detail="Inactive user")
# access_token_expires = timedelta(minutes=config.ACCESS_TOKEN_EXPIRE_MINUTES)
return {
"token_type": "bearer",
}
@router.post("/create", response_model=schemas.User)
def create_user(data: schemas.UserCreate, db: Session = Depends(get_db)):
"""添加用户"""
db_user = crud.get_user_by_name(db, username=data.username)
if db_user:
raise HTTPException(status_code=400, detail="用户已存在")
return crud.create_user(db=db, user=data)
@router.get("/items", tags=['GET', 'POST'])
def ceshi():
return {'message': 'Hello demo Adsadsadsadsadaspplications!'}
......@@ -3,12 +3,8 @@
切换环境,修改文档后面的命令 env = ...
"""
import os
from pydantic import BaseSettings
# from starlette.middleware.cors import CORSMiddleware
# from main import app
#
# from app.api.api_v1 import api_router
class Env(BaseSettings):
......@@ -20,14 +16,12 @@ class Env(BaseSettings):
class TestingEnv(Env):
'''
测试环境配置
'''
"""测试环境配置"""
TESTING: bool = True
class ProdEnv(Env):
'''生产环境配置'''
"""生产环境配置"""
DATABASE_URI: str = 'mysql://user@localhost/foo'
DATABASE_USER: str = ''
DATABASE_PWD: str = ''
......
......@@ -20,7 +20,7 @@ SQLALCHEMY_DATABASE_URL = f'sqlite:///{modul_path}/sql_app.db'
# engine = create_engine(
# SQLALCHEMY_DATABASE_URL, encoding='utf-8', echo=True, connect_args={'check_same_thread': False}
# )
engine = create_engine('mysql+mysqldb://data_center:KCMBfAjeJhbJXsSe@43.138.132.9:3398/fj-data-center')
engine = create_engine('mysql+mysqldb://data_center:KCMBfAjeJhbJXsSe@43.138.132.9:3398/finance')
# 数据库 session 类,用于创建 session 实例
# autoflush 是指发送数据库语句到数据库,但数据库不一定执行写入到磁盘
......@@ -28,3 +28,4 @@ SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
# 创建 Base 类,用于 ORM 模型的继承
Base = declarative_base()
Base.metadata.create_all(engine)
import hashlib
def md5(s):
"""md5加密"""
sign_str = hashlib.md5()
sign_str.update(s.encode('utf-8'))
return sign_str.hexdigest()
......@@ -5,7 +5,7 @@ from fastapi import FastAPI
from app.api.api_v1 import api_router
from starlette.middleware.cors import CORSMiddleware
from core.storage.db import Base, engine
app = FastAPI()
......@@ -19,6 +19,7 @@ app.add_middleware(
allow_headers=['*']) # 允许跨域的headers,可以用来鉴别来源等作用。
app.include_router(api_router, prefix="/api")
Base.metadata.create_all(bind=engine)
if __name__ == '__main__':
uvicorn.run(app=app, host="127.0.0.1", port=8001)
from core.storage.db import Base, engine
Base.metadata.create_all(bind=engine)
from sqlalchemy import Boolean, Column, ForeignKey, Integer, String
from sqlalchemy import Boolean, Column, ForeignKey, Integer, String, DateTime, Float, ARRAY
from sqlalchemy.orm import relationship
from core.storage.db import Base
......@@ -8,8 +8,24 @@ class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
email = Column(String, unique=True, index=True)
hashed_password = Column(String)
is_active = Column(Boolean, default=True)
username = Column(String(100), unique=True, index=True)
description = Column(String(255))
unique = Column(String(50), unique=True)
hashed_password = Column(String(50))
config_key = Column(String(50))
uuid = Column(String(50))
authority = Column(Integer)
remaining_sum = Column(Float)
entry_account = ARRAY(Column(Integer))
out_account = ARRAY(Column(Integer))
create_time = Column(DateTime)
update_time = Column(DateTime)
class Authority(Base):
__tablename__ = "authority"
id = Column(Integer, primary_key=True, index=True)
name = Column(String(50), unique=True, index=True)
create_time = Column(DateTime)
items = relationship("Item", back_populates="owner")
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment