diff --git a/entrance/extend/orm.py b/entrance/extend/orm.py index 8158f3b..05f52bf 100644 --- a/entrance/extend/orm.py +++ b/entrance/extend/orm.py @@ -1,3 +1,43 @@ -from flask_sqlalchemy import SQLAlchemy +import datetime +from typing import Tuple -db: SQLAlchemy = SQLAlchemy() +from flask import request +from flask_sqlalchemy import SQLAlchemy, BaseQuery + + +class Query(BaseQuery): + + def all_json(self) -> list: + print(self) + return [dict(i) for i in self.all()] + + def soft_delete(self): + return self.update({"delete_at": datetime.datetime.now()}) + + def logic_all(self): + return self.filter_by(delete_at=None).all() + + def layui_paginate(self): + """ + layui表格分页 + page + limit + """ + return self.paginate(page=request.args.get('page', type=int), + per_page=request.args.get('limit', type=int), + error_out=False) + + def layui_paginate_json(self) -> Tuple[list, int]: + """ + layui表格分页 + page + limit + """ + p = self.paginate(page=request.args.get('page', type=int), + per_page=request.args.get('limit', type=int), + error_out=False) + + return [dict(i) for i in p.items], p.total + + +db = SQLAlchemy(query_class=Query) diff --git a/entrance/migrations/versions/d51040631f21_.py b/entrance/migrations/versions/d51040631f21_.py new file mode 100644 index 0000000..a5d8536 --- /dev/null +++ b/entrance/migrations/versions/d51040631f21_.py @@ -0,0 +1,32 @@ +"""empty message + +Revision ID: d51040631f21 +Revises: 74133ba99af7 +Create Date: 2022-01-22 23:30:04.372043 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'd51040631f21' +down_revision = '74133ba99af7' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('admin_test', + sa.Column('id', sa.Integer(), autoincrement=True, nullable=False, comment='ID'), + sa.Column('name', sa.String(length=20), nullable=True, comment='名'), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('admin_test') + # ### end Alembic commands ### diff --git a/modules/sys/models/user.py b/modules/sys/models/user.py index d75d34e..4d4caf4 100644 --- a/modules/sys/models/user.py +++ b/modules/sys/models/user.py @@ -8,8 +8,15 @@ class User(BaseModel): username = Column(String(20), comment='用户名') +class Test(BaseModel): + __tablename__ = 'admin_test' + id = Column(Integer, primary_key=True, autoincrement=True, comment='ID') + name = Column(String(20), comment='名') + + class Userschema(PModel): id: int username: str + class Config: orm_mode = True diff --git a/modules/sys/view/user.py b/modules/sys/view/user.py index 453e307..108da19 100644 --- a/modules/sys/view/user.py +++ b/modules/sys/view/user.py @@ -1,11 +1,12 @@ from typing import List -from common.view import Blueprint,View +from common.view import Blueprint, View from flask import jsonify from pydantic import BaseModel, ValidationError, constr, parse_obj_as -from modules.sys.models.user import User, Userschema +from entrance.extend.orm import db +from modules.sys.models.user import User, Userschema, Test user = Blueprint('sys', __name__, url_prefix='/user') @@ -13,7 +14,6 @@ user = Blueprint('sys', __name__, url_prefix='/user') @user.route('/') class UserView(View): def get(self): - u = User.query.all() - # m = parse_obj_as(List[User], u) - - return '1' \ No newline at end of file + data, total = db.session.query(User.id, User.username).layui_paginate_json() + print(data) + return jsonify(data)