Files
vps-tracker/server/db/migrations.js
T
Denozordec 0dd2f0d7fa Add scheduled tariff synchronization and bulk update functionality
- Introduced `runScheduledSyncTariffs` function to handle tariff synchronization independently from VPS and payment sync.
- Updated `syncFromBillmanager` to accept options for skipping tariff and VPS payment syncs.
- Added new database columns for `syncTariffsIntervalMinutes` and `customFields` in settings.
- Enhanced settings page to configure tariff sync interval.
- Implemented bulk update functionality for VPS status and deletion in the VPS management page.
- Updated various components to support new features, including sync log display and improved payment handling.
2026-03-17 23:45:19 +07:00

142 lines
3.8 KiB
JavaScript

/**
* Database migrations — add columns to existing tables
*/
export const MIGRATIONS = [
{
name: 'provider_accounts_api',
run(db) {
try {
db.exec('ALTER TABLE provider_accounts ADD COLUMN apiType TEXT')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
try {
db.exec('ALTER TABLE provider_accounts ADD COLUMN apiBaseUrl TEXT')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
try {
db.exec('ALTER TABLE provider_accounts ADD COLUMN apiCredentials TEXT')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
},
},
{
name: 'settings_sync',
run(db) {
try {
db.exec('ALTER TABLE settings ADD COLUMN syncEnabled INTEGER')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
try {
db.exec('ALTER TABLE settings ADD COLUMN syncIntervalMinutes INTEGER')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
},
},
{
name: 'vps_paidUntil',
run(db) {
try {
db.exec('ALTER TABLE vps ADD COLUMN paidUntil TEXT')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
},
},
{
name: 'provider_accounts_balance_api',
run(db) {
try {
db.exec('ALTER TABLE provider_accounts ADD COLUMN balance_api REAL')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
try {
db.exec('ALTER TABLE provider_accounts ADD COLUMN balance_currency TEXT')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
try {
db.exec('ALTER TABLE provider_accounts ADD COLUMN balance_updated_at TEXT')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
try {
db.exec('ALTER TABLE provider_accounts ADD COLUMN enoughmoneyto TEXT')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
},
},
{
name: 'vps_userOverrides',
run(db) {
try {
db.exec('ALTER TABLE vps ADD COLUMN userOverrides TEXT')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
},
},
{
name: 'active_tariffs_location_cpu',
run(db) {
try {
db.exec('ALTER TABLE active_tariffs ADD COLUMN location TEXT')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
try {
db.exec('ALTER TABLE active_tariffs ADD COLUMN cpuModel TEXT')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
},
},
{
name: 'settings_customFields',
run(db) {
try {
db.exec('ALTER TABLE settings ADD COLUMN customFields TEXT')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
},
},
{
name: 'settings_syncTariffsInterval',
run(db) {
try {
db.exec('ALTER TABLE settings ADD COLUMN syncTariffsIntervalMinutes INTEGER')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
},
},
{
name: 'active_tariffs_country_datacenter',
run(db) {
try {
db.exec('ALTER TABLE active_tariffs ADD COLUMN country TEXT')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
try {
db.exec('ALTER TABLE active_tariffs ADD COLUMN datacenterKey TEXT')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
try {
db.exec('ALTER TABLE active_tariffs ADD COLUMN datacenterName TEXT')
} catch (e) {
if (!e.message?.includes('duplicate column')) throw e
}
},
},
]