Add File
This commit is contained in:
128
backend/apps/datasource/models/datasource.py
Normal file
128
backend/apps/datasource/models/datasource.py
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
from typing import List, Optional
|
||||||
|
|
||||||
|
from pydantic import BaseModel
|
||||||
|
from sqlalchemy import Column, Text, BigInteger, DateTime, Integer, Identity
|
||||||
|
from sqlmodel import SQLModel, Field
|
||||||
|
|
||||||
|
|
||||||
|
class CoreDatasource(SQLModel, table=True):
|
||||||
|
__tablename__ = "core_datasource"
|
||||||
|
id: int = Field(sa_column=Column(Integer, Identity(always=True), nullable=False, primary_key=True))
|
||||||
|
name: str = Field(max_length=128, nullable=False)
|
||||||
|
description: str = Field(max_length=512, nullable=True)
|
||||||
|
type: str = Field(max_length=64)
|
||||||
|
type_name: str = Field(max_length=64, nullable=True)
|
||||||
|
configuration: str = Field(sa_column=Column(Text))
|
||||||
|
create_time: datetime = Field(sa_column=Column(DateTime(timezone=False), nullable=True))
|
||||||
|
create_by: int = Field(sa_column=Column(BigInteger()))
|
||||||
|
status: str = Field(max_length=64, nullable=True)
|
||||||
|
num: str = Field(max_length=256, nullable=True)
|
||||||
|
oid: int = Field(sa_column=Column(BigInteger()))
|
||||||
|
|
||||||
|
|
||||||
|
class CoreTable(SQLModel, table=True):
|
||||||
|
__tablename__ = "core_table"
|
||||||
|
id: int = Field(sa_column=Column(Integer, Identity(always=True), nullable=False, primary_key=True))
|
||||||
|
ds_id: int = Field(sa_column=Column(BigInteger()))
|
||||||
|
checked: bool = Field(default=True)
|
||||||
|
table_name: str = Field(sa_column=Column(Text))
|
||||||
|
table_comment: str = Field(sa_column=Column(Text))
|
||||||
|
custom_comment: str = Field(sa_column=Column(Text))
|
||||||
|
|
||||||
|
|
||||||
|
class CoreField(SQLModel, table=True):
|
||||||
|
__tablename__ = "core_field"
|
||||||
|
id: int = Field(sa_column=Column(Integer, Identity(always=True), nullable=False, primary_key=True))
|
||||||
|
ds_id: int = Field(sa_column=Column(BigInteger()))
|
||||||
|
table_id: int = Field(sa_column=Column(BigInteger()))
|
||||||
|
checked: bool = Field(default=True)
|
||||||
|
field_name: str = Field(sa_column=Column(Text))
|
||||||
|
field_type: str = Field(max_length=128, nullable=True)
|
||||||
|
field_comment: str = Field(sa_column=Column(Text))
|
||||||
|
custom_comment: str = Field(sa_column=Column(Text))
|
||||||
|
field_index: int = Field(sa_column=Column(BigInteger()))
|
||||||
|
|
||||||
|
|
||||||
|
# datasource create obj
|
||||||
|
class CreateDatasource(BaseModel):
|
||||||
|
id: int = None
|
||||||
|
name: str = ''
|
||||||
|
description: str = ''
|
||||||
|
type: str = ''
|
||||||
|
configuration: str = ''
|
||||||
|
create_time: Optional[datetime] = None
|
||||||
|
create_by: int = 0
|
||||||
|
status: str = ''
|
||||||
|
num: str = ''
|
||||||
|
oid: int = 1
|
||||||
|
tables: List[CoreTable] = []
|
||||||
|
|
||||||
|
|
||||||
|
# edit local saved table and fields
|
||||||
|
class TableObj(BaseModel):
|
||||||
|
table: CoreTable = None
|
||||||
|
fields: List[CoreField] = []
|
||||||
|
|
||||||
|
|
||||||
|
# datasource config info
|
||||||
|
class DatasourceConf(BaseModel):
|
||||||
|
host: str = ''
|
||||||
|
port: int = 0
|
||||||
|
username: str = ''
|
||||||
|
password: str = ''
|
||||||
|
database: str = ''
|
||||||
|
driver: str = ''
|
||||||
|
extraJdbc: str = ''
|
||||||
|
dbSchema: str = ''
|
||||||
|
filename: str = ''
|
||||||
|
sheets: List = ''
|
||||||
|
mode: str = ''
|
||||||
|
timeout: int = 30
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
return {
|
||||||
|
"host": self.host,
|
||||||
|
"port": self.port,
|
||||||
|
"username": self.username,
|
||||||
|
"password": self.password,
|
||||||
|
"database": self.database,
|
||||||
|
"driver": self.driver,
|
||||||
|
"extraJdbc": self.extraJdbc,
|
||||||
|
"dbSchema": self.dbSchema,
|
||||||
|
"filename": self.filename,
|
||||||
|
"sheets": self.sheets,
|
||||||
|
"mode": self.mode,
|
||||||
|
"timeout": self.timeout
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class TableSchema:
|
||||||
|
def __init__(self, attr1, attr2):
|
||||||
|
self.tableName = attr1
|
||||||
|
self.tableComment = attr2 if attr2 is None or isinstance(attr2, str) else attr2.decode("utf-8")
|
||||||
|
|
||||||
|
tableName: str
|
||||||
|
tableComment: str
|
||||||
|
|
||||||
|
|
||||||
|
class ColumnSchema:
|
||||||
|
def __init__(self, attr1, attr2, attr3):
|
||||||
|
self.fieldName = attr1
|
||||||
|
self.fieldType = attr2
|
||||||
|
self.fieldComment = attr3 if attr3 is None or isinstance(attr3, str) else attr3.decode("utf-8")
|
||||||
|
|
||||||
|
fieldName: str
|
||||||
|
fieldType: str
|
||||||
|
fieldComment: str
|
||||||
|
|
||||||
|
|
||||||
|
class TableAndFields:
|
||||||
|
def __init__(self, schema, table, fields):
|
||||||
|
self.schema = schema
|
||||||
|
self.table = table
|
||||||
|
self.fields = fields
|
||||||
|
|
||||||
|
schema: str
|
||||||
|
table: CoreTable
|
||||||
|
fields: List[CoreField]
|
||||||
Reference in New Issue
Block a user