Files
SQLBot/backend/apps/datasource/crud/datasource.py
T

62 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from sqlmodel import select
from ..models.datasource import CoreDatasource, DatasourceConf
import pyodbc
import datetime
from common.core.deps import SessionDep
import json
from ..utils.utils import aes_decrypt
def get_datasource_list(session: SessionDep) -> CoreDatasource:
statement = select(CoreDatasource).order_by(CoreDatasource.create_time.desc())
datasource_list = session.exec(statement).fetchall()
return datasource_list
def check_status(session: SessionDep, ds: CoreDatasource):
conf = DatasourceConf(**json.loads(aes_decrypt(ds.configuration)))
conn_str = (
"DRIVER={MySQL ODBC 9.3 Unicode Driver};" # todo driver config
f"SERVER={conf.host};"
f"DATABASE={conf.database};"
f"UID={conf.username};"
f"PWD={conf.password};"
f"PORT={conf.port};"
)
conn = None
try:
conn = pyodbc.connect(conn_str)
print("Connect Success")
return True
except pyodbc.Error as e:
print(f"Connect Fail:{e}")
return False
finally:
if conn is not None:
conn.close()
def create_ds(session: SessionDep, ds: CoreDatasource):
ds.create_time = datetime.datetime.now()
ds.status = "Success" # todo check status
record = CoreDatasource(**ds.model_dump())
session.add(record)
session.commit()
return ds
def update_ds(session: SessionDep, ds: CoreDatasource):
ds.id = int(ds.id)
record = session.exec(select(CoreDatasource).where(CoreDatasource.id == ds.id)).first()
update_data = ds.model_dump(exclude_unset=True)
for field, value in update_data.items():
setattr(record, field, value)
session.add(record)
session.commit()
return ds
def delete_ds(session: SessionDep, id: int):
term = session.exec(select(CoreDatasource).where(CoreDatasource.id == id)).first()
session.delete(term)
session.commit()
return {
"message": f"Datasource with ID {id} deleted successfully."
}