Add support for snowflake ID primary key (#670)

* fix: 修复PostgreSQL SQL语法错误,将反引号替换为双引号

* feat: 新增雪花算法ID实现

* 优化雪花算法和主键类型

* 修复错误引用

* 添加雪花详情链接

* feat: add snowflake ID parser method

* 修复独立执行异常

* 更新系统时间错误类
This commit is contained in:
Dylan
2025-06-16 13:34:27 +08:00
committed by GitHub
parent 845f2f0ff8
commit 7afd8415cd
12 changed files with 626 additions and 325 deletions
@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
from typing import TYPE_CHECKING, Union
from sqlalchemy import ForeignKey, String
from sqlalchemy import BigInteger, ForeignKey, String
from sqlalchemy.dialects.mysql import LONGTEXT
from sqlalchemy.dialects.postgresql import TEXT
from sqlalchemy.orm import Mapped, mapped_column, relationship
@@ -33,6 +33,6 @@ class GenColumn(DataClassBase):
# 代码生成业务模型一对多
gen_business_id: Mapped[int] = mapped_column(
ForeignKey('gen_business.id', ondelete='CASCADE'), default=0, comment='代码生成业务ID'
BigInteger, ForeignKey('gen_business.id', ondelete='CASCADE'), default=0, comment='代码生成业务ID'
)
gen_business: Mapped[Union['GenBusiness', None]] = relationship(init=False, back_populates='gen_column')
+4 -2
View File
@@ -4,7 +4,7 @@ from __future__ import annotations
from typing import TYPE_CHECKING
from sqlalchemy import ForeignKey, String
from sqlalchemy import BigInteger, ForeignKey, String
from sqlalchemy.orm import Mapped, mapped_column, relationship
from backend.common.model import Base, id_key
@@ -23,5 +23,7 @@ class UserSocial(Base):
source: Mapped[str] = mapped_column(String(20), comment='第三方用户来源')
# 用户社交信息一对多
user_id: Mapped[int] = mapped_column(ForeignKey('sys_user.id', ondelete='CASCADE'), comment='用户关联ID')
user_id: Mapped[int] = mapped_column(
BigInteger, ForeignKey('sys_user.id', ondelete='CASCADE'), comment='用户关联ID'
)
user: Mapped[User | None] = relationship(init=False, backref='socials')
+1 -1
View File
@@ -22,7 +22,7 @@ from backend.core.conf import settings
from backend.core.path_conf import PLUGIN_DIR
from backend.database.redis import RedisCli, redis_client
from backend.plugin.errors import PluginConfigError, PluginInjectError
from backend.utils._asyncio import run_await
from backend.utils._await import run_await
from backend.utils.import_parse import import_module_cached