增删改查模型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 datetime import datetime
|
||||
from Utils.CommonUtils import get_sqlalchemy_model_fields
|
||||
from Utils.SqlAlchemyUtils import Base, get_db
|
||||
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}%'))
|
||||
if type(value) in [int, float, bool]:
|
||||
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()
|
||||
if params.page is not None and params.page_size is not None:
|
||||
query = query.offset((params.page - 1) * params.page_size).limit(params.page_size).all()
|
||||
page=None
|
||||
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
|
||||
|
||||
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 (
|
||||
eval(f'Optional[{item[0].__name__}]', globals()), item[1]) for key, item in
|
||||
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,
|
||||
**{key: (eval(f'Optional[{item[0].__name__}]', globals()), item[1]) for key, item in
|
||||
fields_dict.items()})
|
||||
**query_fields_dic)
|
||||
return [model, model_id, model_create, model_update, model_query]
|
||||
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
from hashlib import md5
|
||||
|
||||
from jose import jwt
|
||||
|
||||
|
||||
def get_str_md(string: str):
|
||||
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.SqlAlchemyUtils import Base
|
||||
|
||||
|
@ -10,6 +10,8 @@ class ItemModel(Base):
|
|||
mass = Column(Float)
|
||||
color = 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):
|
||||
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
|
||||
|
|
Loading…
Reference in New Issue