mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 01:06:59 +08:00
feat: Maintain the order of table fields
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
"""034_field_sort
|
||||
|
||||
Revision ID: e8b470d2b150
|
||||
Revises: 3cb5d6a54f2e
|
||||
Create Date: 2025-08-08 11:33:33.227564
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
import sqlmodel.sql.sqltypes
|
||||
from sqlalchemy.dialects import postgresql
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'e8b470d2b150'
|
||||
down_revision = '3cb5d6a54f2e'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.add_column('core_field', sa.Column('field_index', sa.BigInteger(), nullable=True))
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_column('core_field', 'field_index')
|
||||
# ### end Alembic commands ###
|
||||
@@ -204,7 +204,7 @@ def sync_table(session: SessionDep, ds: CoreDatasource, tables: List[CoreTable])
|
||||
|
||||
def sync_fields(session: SessionDep, ds: CoreDatasource, table: CoreTable, fields: List[ColumnSchema]):
|
||||
id_list = []
|
||||
for item in fields:
|
||||
for index, item in enumerate(fields):
|
||||
statement = select(CoreField).where(
|
||||
and_(CoreField.table_id == table.id, CoreField.field_name == item.fieldName))
|
||||
record = session.exec(statement).first()
|
||||
@@ -213,12 +213,13 @@ def sync_fields(session: SessionDep, ds: CoreDatasource, table: CoreTable, field
|
||||
id_list.append(record.id)
|
||||
|
||||
record.field_comment = item.fieldComment
|
||||
record.field_index = index
|
||||
session.add(record)
|
||||
session.commit()
|
||||
else:
|
||||
field = CoreField(ds_id=ds.id, table_id=table.id, checked=True, field_name=item.fieldName,
|
||||
field_type=item.fieldType, field_comment=item.fieldComment,
|
||||
custom_comment=item.fieldComment)
|
||||
custom_comment=item.fieldComment, field_index=index)
|
||||
session.add(field)
|
||||
session.flush()
|
||||
session.refresh(field)
|
||||
|
||||
@@ -8,7 +8,7 @@ def delete_field_by_ds_id(session: SessionDep, id: int):
|
||||
|
||||
|
||||
def get_fields_by_table_id(session: SessionDep, id: int):
|
||||
return session.query(CoreField).filter(CoreField.table_id == id).all()
|
||||
return session.query(CoreField).filter(CoreField.table_id == id).order_by(CoreField.field_index.asc()).all()
|
||||
|
||||
|
||||
def update_field(session: SessionDep, item: CoreField):
|
||||
|
||||
@@ -41,6 +41,7 @@ class CoreField(SQLModel, table=True):
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user