0.0.6 • Published 11 months ago

@hanmotec/aoss-service-api v0.0.6

Weekly downloads
-
License
-
Repository
-
Last release
11 months ago

AOSS Service API

AOSS Service API是用于第三方系统和Aoss Service交互的类库,当前提供同步各类数据的接口。

安装

npm i -D  @hanmotec/aoss-service-api  

使用方法

import SyncContext from "@hanmotec/aoss-service-api";

const initializeAossSyncTasks = () => {
    let syncCtx = SyncContext.initialize("your-app-api-key", "your-security-key", "http://aoss-service")
}

定时任务管理器

CronTasks 定时任务管理可以调度管理当前的定时任务,按照预定的间隔执行同步任务

addTask

addTask 增加一个同步任务并实现定时调用

  • 参数:
    • service (BaseSynService): 同步数据的服务类
    • cronTime (string): cron调度规则,同linux的crontab
    • onComplete (any): 任务执行完毕的回调函数
//增加同步租户任务,0,5,10是5分钟的整数倍的时候执行任务
cronTasks.addTask(new SynTenantService(beanFactory.getInstance(Types.TenantDAO.name)), '* */5 * * * * *');

租户同步服务

用于实现同步租户的数据,使用的时候仅仅需要注入同步租户的DAO的实现类即可。

用户同步服务

用于实现同步用户数据,使用的时候仅仅需要注入同步用户的DAO的实现类即可。

数据字典同步服务

用于实现同步数据字典数据,多个数据字典同步需要依次注入每个数据字典的同步DAO实现类。

数据同步DAO接口

SyncDataDAO 接口定义了与数据库同步数据的方法,包括更新、创建和获取最新时间戳的数据条目。需要在项目中实现这个接口。

syncUpdate

更新现有数据条目,如果更新成功过返回1,如果当前数据库中没有这个条目,返回0。

  • 参数:
    • conn (DBConnection): 数据库连接对象。
    • data (any): 要更新的数据。
  • 返回值:
    • Promise<number>: 一个返回更新行数的 Promise。
createNew

createNew在数据库中新增一个条目

  • 参数:
    • conn (DBConnection): 数据库连接对象。
    • data (any): 要插入的数据。
  • 返回值:
    • Promise<void>: 一个在数据插入完成时解析的 Promise。
getLatestTimestamp

getLatestTimestamp获取目标数据集中的最新时间戳,用于同步这个时间戳以后的变更数据。

  • 参数:
    • conn (DBConnection): 数据库连接对象。
  • 返回值:
    • Promise<Date>: 返回数据集最新时间戳的 Promise。

示例代码

下面的示例代码为同步租户

export default class TenantDAOImpl extends BaseDAO implements SyncDataDAO {

    
    async createNew(conn: DBConnection, item: Tenant): Promise<void> {
        await conn.executeUpdate(SQL_INSERT, [item.code, item.name, item.abbr, item.status,
            item.latestUpdated]);
    }


    syncUpdate(conn: DBConnection, item: Tenant): Promise<number> {
        return conn.executeUpdate(SQL_SYNC_UPDATE, [item.code, item.name, item.abbr, item.status,
            item.latestUpdated]);
    }

    async getLatestTimestamp(conn: DBConnection): Promise<Date> {
        let result: any = await conn.find(SQL_GET_LATEST_TS);
        return result?.ts;
    }

}
0.0.6

11 months ago

0.0.5

11 months ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago