mirror of
https://github.com/OneUptime/oneuptime
synced 2024-11-22 07:10:53 +00:00
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import DataMigrationBase from "./DataMigrationBase";
|
|
import LIMIT_MAX from "Common/Types/Database/LimitMax";
|
|
import Sleep from "Common/Types/Sleep";
|
|
import { IsBillingEnabled } from "Common/Server/EnvironmentConfig";
|
|
import ProjectService from "Common/Server/Services/ProjectService";
|
|
import AllMeteredPlans from "Common/Server/Types/Billing/MeteredPlan/AllMeteredPlans";
|
|
import QueryHelper from "Common/Server/Types/Database/QueryHelper";
|
|
import Project from "Common/Models/DatabaseModels/Project";
|
|
|
|
export default class UpdateActiveMonitorCountToBillingProvider extends DataMigrationBase {
|
|
public constructor() {
|
|
super("UpdateActiveMonitorCountToBillingProvider");
|
|
}
|
|
|
|
public override async migrate(): Promise<void> {
|
|
if (!IsBillingEnabled) {
|
|
return;
|
|
}
|
|
|
|
const projects: Array<Project> = await ProjectService.findBy({
|
|
query: {
|
|
paymentProviderMeteredSubscriptionId: QueryHelper.notNull(),
|
|
},
|
|
select: {
|
|
_id: true,
|
|
paymentProviderMeteredSubscriptionId: true,
|
|
},
|
|
limit: LIMIT_MAX,
|
|
skip: 0,
|
|
props: {
|
|
isRoot: true,
|
|
},
|
|
});
|
|
|
|
for (const project of projects) {
|
|
for (const meteredPlan of AllMeteredPlans) {
|
|
await meteredPlan.reportQuantityToBillingProvider(project.id!, {});
|
|
}
|
|
|
|
await Sleep.sleep(100);
|
|
}
|
|
}
|
|
|
|
public override async rollback(): Promise<void> {
|
|
return;
|
|
}
|
|
}
|