You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.7 KiB
58 lines
1.7 KiB
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
# @Time : 2023/5/9 14:29
|
|
# @Author : old tom
|
|
# @File : metadata_version_dao.py
|
|
# @Project : futool-tiny-datahub
|
|
# @Desc :
|
|
from common.fudb.connectors.connector_factory import ConnFactory
|
|
from common.fudb.dbapis.fu_dao import BaseDao
|
|
|
|
|
|
class IncreaseVersionError(Exception):
|
|
"""
|
|
递增版本号异常
|
|
"""
|
|
|
|
def __init__(self, msg):
|
|
Exception.__init__(self, msg)
|
|
|
|
|
|
class MetadataVersionDao(BaseDao):
|
|
|
|
def __init__(self, connector: ConnFactory):
|
|
super().__init__(connector)
|
|
|
|
def init_version(self, source_id):
|
|
"""
|
|
初始化版本号
|
|
:param source_id:
|
|
:return:
|
|
"""
|
|
return self.execute_update(f"insert into metadata_object_version_record (source_id) values ('{source_id}')")
|
|
|
|
def query_latest_version(self, source_id):
|
|
"""
|
|
查询最新版本号
|
|
:param source_id:
|
|
:return:
|
|
"""
|
|
result = self.query_one(
|
|
f"select max(version_code) from metadata_object_version_record where source_id='{source_id}'")
|
|
return result[0] if result else None
|
|
|
|
def add_version(self, source_id):
|
|
"""
|
|
版本号加1并返回最新
|
|
:param source_id:
|
|
:return:
|
|
"""
|
|
last_version = self.query_latest_version(source_id)
|
|
latest_version = last_version + 1
|
|
flag = self.execute_update(
|
|
f"insert into metadata_object_version_record (source_id,version_code) values ('{source_id}',{latest_version})")
|
|
if flag == 1:
|
|
return latest_version
|
|
else:
|
|
raise IncreaseVersionError(f'[{source_id}] 更新版本号失败')
|