public Mono upgradeMetadata(String productId, DeviceMetadata metadata, boolean ddl) { String tableName = getLatestTableTableName(productId); log.debug('upgrade product[{}] metadata,table name:[{}] ', productId, tableName); TableBuilder builder = databaseOperator .ddl() .createOrAlter(tableName) .addColumn('id').primaryKey().varchar(64).commit() .addColumn('device_name').alias('deviceName').varchar(128).notNull().commit() .addColumn('report_ts').alias('reportTs').bigint().commit() .addColumn('report_time').alias('reportTime').varchar(128).commit() .addColumn('online').alias('online').varchar(128).commit() .merge(true) .allowAlter(ddl);

for (PropertyMetadata property : metadata.getProperties()) {
    builder.addColumn(convertColumn(property));
}
for (EventMetadata event : metadata.getEvents()) {
    DataType type = event.getType();
    if (type instanceof ObjectType) {
        for (PropertyMetadata property : ((ObjectType) type).getProperties()) {
            RDBColumnMetadata column = convertColumn(property);
            column.setName(getEventColumn(event.getId(), property.getId()));
            builder.addColumn(column);
        }
    }
}

return builder.execute().then();

}

Spring Reactive Programming: Upgrading Metadata with Mono in Java

原文地址: https://www.cveoy.top/t/topic/oCxA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录