增删改查模型bug修改
This commit is contained in:
parent
a8325deab9
commit
98f36223b6
|
@ -1,6 +1,6 @@
|
||||||
from typing import TypeVar, Generic, Any, List, get_args, Union, Optional
|
from typing import TypeVar, Generic, Any, List, get_args, Union, Optional, Tuple
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
from datetime import datetime
|
||||||
from Utils.CommonUtils import get_sqlalchemy_model_fields
|
from Utils.CommonUtils import get_sqlalchemy_model_fields
|
||||||
from Utils.SqlAlchemyUtils import Base, get_db
|
from Utils.SqlAlchemyUtils import Base, get_db
|
||||||
from pydantic import BaseModel, create_model
|
from pydantic import BaseModel, create_model
|
||||||
|
@ -149,9 +149,22 @@ class CRUDBase(Generic[DbModelType, ModelType, IdSchemaType, CreateSchemaType, U
|
||||||
query = query.filter(getattr(self.db_model, key).like(f'%{value}%'))
|
query = query.filter(getattr(self.db_model, key).like(f'%{value}%'))
|
||||||
if type(value) in [int, float, bool]:
|
if type(value) in [int, float, bool]:
|
||||||
query = query.filter_by(**{key: value})
|
query = query.filter_by(**{key: value})
|
||||||
|
# 日期范围查询
|
||||||
|
if type(value) in [list, tuple]:
|
||||||
|
if value[0] is not None:
|
||||||
|
query = query.filter(getattr(self.db_model, key) >= datetime.fromtimestamp(value[0]))
|
||||||
|
if value[1] is not None:
|
||||||
|
query = query.filter(getattr(self.db_model, key) <= datetime.fromtimestamp(value[1]))
|
||||||
|
|
||||||
count = query.count()
|
count = query.count()
|
||||||
if params.page is not None and params.page_size is not None:
|
page=None
|
||||||
query = query.offset((params.page - 1) * params.page_size).limit(params.page_size).all()
|
page_size=None
|
||||||
|
if 'page' in params_dict:
|
||||||
|
page=params_dict['page']
|
||||||
|
if 'page_size' in params_dict:
|
||||||
|
page_size = params_dict['page_size']
|
||||||
|
if page is not None and page_size is not None:
|
||||||
|
query = query.offset((page - 1) * page_size).limit(page_size).all()
|
||||||
return count, query
|
return count, query
|
||||||
|
|
||||||
def get(self, db: Session, item_id: IdSchemaType) -> ModelType:
|
def get(self, db: Session, item_id: IdSchemaType) -> ModelType:
|
||||||
|
@ -180,9 +193,17 @@ def create_crud_model(db_model: Base, name, auto_create_keys=['id'], index_key='
|
||||||
**{key: item if key == index_key else (
|
**{key: item if key == index_key else (
|
||||||
eval(f'Optional[{item[0].__name__}]', globals()), item[1]) for key, item in
|
eval(f'Optional[{item[0].__name__}]', globals()), item[1]) for key, item in
|
||||||
fields_dict.items() if key not in auto_create_keys})
|
fields_dict.items() if key not in auto_create_keys})
|
||||||
|
query_fields_dic = {}
|
||||||
|
for key, item in fields_dict.items():
|
||||||
|
print(item[0].__name__)
|
||||||
|
if item[0].__name__ == 'datetime':
|
||||||
|
query_fields_dic[key] = (
|
||||||
|
eval(f'Optional[List[Optional[int]]]', globals(), locals()), None)
|
||||||
|
else:
|
||||||
|
query_fields_dic[key] = (eval(f'Optional[{item[0].__name__}]', globals()), None)
|
||||||
|
print(query_fields_dic)
|
||||||
model_query = create_model(f"{name}Query", __config__=config,
|
model_query = create_model(f"{name}Query", __config__=config,
|
||||||
**{key: (eval(f'Optional[{item[0].__name__}]', globals()), item[1]) for key, item in
|
**query_fields_dic)
|
||||||
fields_dict.items()})
|
|
||||||
return [model, model_id, model_create, model_update, model_query]
|
return [model, model_id, model_create, model_update, model_query]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
from hashlib import md5
|
from hashlib import md5
|
||||||
|
|
||||||
from jose import jwt
|
|
||||||
|
|
||||||
|
|
||||||
def get_str_md(string: str):
|
def get_str_md(string: str):
|
||||||
md = md5()
|
md = md5()
|
||||||
|
|
4
crud.py
4
crud.py
|
@ -1,4 +1,4 @@
|
||||||
from sqlalchemy import Column, String, Float, Integer
|
from sqlalchemy import Column, String, Float, Integer, DateTime, func
|
||||||
from Utils.CrudUtils import auto_create_crud
|
from Utils.CrudUtils import auto_create_crud
|
||||||
from Utils.SqlAlchemyUtils import Base
|
from Utils.SqlAlchemyUtils import Base
|
||||||
|
|
||||||
|
@ -10,6 +10,8 @@ class ItemModel(Base):
|
||||||
mass = Column(Float)
|
mass = Column(Float)
|
||||||
color = Column(String(32))
|
color = Column(String(32))
|
||||||
type = Column(String(32))
|
type = Column(String(32))
|
||||||
|
create_time = Column(DateTime, server_default=func.now(), comment='创建时间')
|
||||||
|
update_time = Column(DateTime, server_default=func.now(), onupdate=func.now(), comment='修改时间')
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
|
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
|
||||||
|
|
3
main.py
3
main.py
|
@ -9,6 +9,9 @@ from Utils.SqlAlchemyUtils import init_database
|
||||||
from Utils.TestUtils import init_test_env
|
from Utils.TestUtils import init_test_env
|
||||||
from fastapi.staticfiles import StaticFiles
|
from fastapi.staticfiles import StaticFiles
|
||||||
|
|
||||||
|
from crud import item_crud
|
||||||
|
|
||||||
|
item_crud.mount(AppRouter.router)
|
||||||
init_common_config()
|
init_common_config()
|
||||||
init_database()
|
init_database()
|
||||||
init_redis_pool()
|
init_redis_pool()
|
||||||
|
|
Loading…
Reference in New Issue