mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 01:06:59 +08:00
33 lines
1.5 KiB
Python
33 lines
1.5 KiB
Python
from common.core.deps import SessionDep
|
|
from ..models.datasource import CoreField, FieldObj, CoreTable
|
|
from sqlalchemy import or_, and_
|
|
from fastapi import HTTPException
|
|
|
|
|
|
def delete_field_by_ds_id(session: SessionDep, id: int):
|
|
session.query(CoreField).filter(CoreField.ds_id == id).delete(synchronize_session=False)
|
|
session.commit()
|
|
|
|
|
|
def get_fields_by_table_id(session: SessionDep, ds_id: int, id: int, field: FieldObj):
|
|
table = session.query(CoreTable).filter(and_(CoreTable.id == id, CoreTable.ds_id == ds_id)).first()
|
|
if not table:
|
|
raise HTTPException(status_code=500, detail='The data source ID does not match the table ID')
|
|
|
|
if field and field.fieldName:
|
|
return session.query(CoreField).filter(
|
|
and_(CoreField.table_id == id, or_(CoreField.field_name.like(f'%{field.fieldName}%'),
|
|
CoreField.field_name.like(f'%{field.fieldName.lower()}%'),
|
|
CoreField.field_name.like(f'%{field.fieldName.upper()}%')))).order_by(
|
|
CoreField.field_index.asc()).all()
|
|
else:
|
|
return session.query(CoreField).filter(CoreField.table_id == id).order_by(CoreField.field_index.asc()).all()
|
|
|
|
|
|
def update_field(session: SessionDep, item: CoreField):
|
|
record = session.query(CoreField).filter(CoreField.id == item.id).first()
|
|
record.checked = item.checked
|
|
record.custom_comment = item.custom_comment
|
|
session.add(record)
|
|
session.commit()
|