fix(traffic): сохранять историю и показывать достоверную свежесть
This commit is contained in:
1 parent
ebe62ae2ef
commit
1275dd7b9b
48 files changed
+1899
-187
No files matched your search
@@ -341,6 +341,15 @@ export const uptimeSettings = pgTable("uptime_settings", {
|
||||
updatedAt: ts("updated_at").notNull().defaultNow(),
|
||||
})
|
||||
|
||||
export const trafficCollectionState = pgTable("traffic_collection_state", {
|
||||
serverId: intPkRef().primaryKey().references(() => servers.id, { onDelete: "cascade" }),
|
||||
serverUpdatedAt: ts("server_updated_at").notNull(),
|
||||
lastAttemptAt: ts("last_attempt_at").notNull(),
|
||||
lastSucceededAt: ts("last_succeeded_at"),
|
||||
status: text("status").notNull(),
|
||||
error: text("error"),
|
||||
})
|
||||
|
||||
export const uptimeProbes = pgTable("uptime_probes", {
|
||||
id: text("id").primaryKey(),
|
||||
srcServerId: bigint("src_server_id", { mode: "number" }).notNull()
|
||||
|
||||
@@ -12,8 +12,10 @@ assert.equal(encodeTrafficFlags(true, true), 3)
|
||||
assert.equal(encodeTrafficFlags(false, false), 0)
|
||||
assert.equal(trafficFlagRunning(1), true)
|
||||
assert.equal(trafficFlagDisabled(1), false)
|
||||
assert.deepEqual(decodeTrafficSampleFlags(1), { running: true, disabled: false })
|
||||
assert.deepEqual(decodeTrafficSampleFlags(0), { running: false, disabled: false })
|
||||
assert.deepEqual(decodeTrafficSampleFlags(undefined), { running: false, disabled: false })
|
||||
assert.deepEqual(decodeTrafficSampleFlags(1), { running: true, disabled: false, countersKnown: false })
|
||||
assert.deepEqual(decodeTrafficSampleFlags(0), { running: false, disabled: false, countersKnown: false })
|
||||
assert.deepEqual(decodeTrafficSampleFlags(undefined), { running: false, disabled: false, countersKnown: false })
|
||||
assert.equal(encodeTrafficFlags(true,false,true),5)
|
||||
assert.deepEqual(decodeTrafficSampleFlags(5), {running:true,disabled:false,countersKnown:true})
|
||||
|
||||
console.log("traffic-flags.test.ts: ok")
|
||||
@@ -1,8 +1,10 @@
|
||||
export const TRAFFIC_FLAG_RUNNING = 1
|
||||
export const TRAFFIC_FLAG_DISABLED = 2
|
||||
export const TRAFFIC_FLAG_COUNTERS_KNOWN = 4
|
||||
|
||||
export function encodeTrafficFlags(running: boolean, disabled: boolean): number {
|
||||
export function encodeTrafficFlags(running: boolean, disabled: boolean, countersKnown = false): number {
|
||||
return (running ? TRAFFIC_FLAG_RUNNING : 0) | (disabled ? TRAFFIC_FLAG_DISABLED : 0)
|
||||
| (countersKnown ? TRAFFIC_FLAG_COUNTERS_KNOWN : 0)
|
||||
}
|
||||
|
||||
export function trafficFlagRunning(flags: number | null | undefined): boolean {
|
||||
@@ -16,9 +18,11 @@ export function trafficFlagDisabled(flags: number | null | undefined): boolean {
|
||||
export function decodeTrafficSampleFlags(flags: number | null | undefined): {
|
||||
running: boolean
|
||||
disabled: boolean
|
||||
countersKnown: boolean
|
||||
} {
|
||||
return {
|
||||
running: trafficFlagRunning(flags),
|
||||
disabled: trafficFlagDisabled(flags),
|
||||
countersKnown: ((Number(flags) || 0) & TRAFFIC_FLAG_COUNTERS_KNOWN) !== 0,
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user