| parser.add_argument("limit", type=inputs.int_range(1, 100), required=False, default=20, location="args") | parser.add_argument("limit", type=inputs.int_range(1, 100), required=False, default=20, location="args") | ||||
| args = parser.parse_args() | args = parser.parse_args() | ||||
| tenants = Tenant.query.order_by(Tenant.created_at.desc()).paginate(page=args["page"], per_page=args["limit"]) | |||||
| tenants = Tenant.query.order_by(Tenant.created_at.desc()).paginate( | |||||
| page=args["page"], per_page=args["limit"], error_out=False | |||||
| ) | |||||
| has_more = False | has_more = False | ||||
| if len(tenants.items) == args["limit"]: | |||||
| current_page_first_tenant = tenants[-1] | |||||
| rest_count = ( | |||||
| db.session.query(Tenant) | |||||
| .filter( | |||||
| Tenant.created_at < current_page_first_tenant.created_at, Tenant.id != current_page_first_tenant.id | |||||
| ) | |||||
| .count() | |||||
| ) | |||||
| if rest_count > 0: | |||||
| has_more = True | |||||
| total = db.session.query(Tenant).count() | |||||
| if tenants.has_next: | |||||
| has_more = True | |||||
| return { | return { | ||||
| "data": marshal(tenants.items, workspace_fields), | "data": marshal(tenants.items, workspace_fields), | ||||
| "has_more": has_more, | "has_more": has_more, | ||||
| "limit": args["limit"], | "limit": args["limit"], | ||||
| "page": args["page"], | "page": args["page"], | ||||
| "total": total, | |||||
| "total": tenants.total, | |||||
| }, 200 | }, 200 | ||||