Stronger types for unix timestamps
This commit is contained in:
parent
217ed6ff20
commit
c627e702ce
|
@ -76,10 +76,9 @@ async function removePendingMailFromQueue(id: MailId): Promise<void> {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function incrementFailureCounterForPendingEmail(id: MailId): Promise<void> {
|
async function incrementFailureCounterForPendingEmail(id: MailId): Promise<void> {
|
||||||
const now = moment();
|
|
||||||
await db.run(
|
await db.run(
|
||||||
'UPDATE email_queue SET failures = failures + 1, modified_at = ? WHERE id = ?',
|
'UPDATE email_queue SET failures = failures + 1, modified_at = ? WHERE id = ?',
|
||||||
[now.unix(), id],
|
[moment().unix(), id],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -666,6 +666,10 @@ export async function sendMonitoringMails(): Promise<void> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function toUnixTimestamp(moment: Moment): UnixTimestampSeconds {
|
||||||
|
return moment.unix() as UnixTimestampSeconds;
|
||||||
|
}
|
||||||
|
|
||||||
export async function deleteOfflineNodes(): Promise<void> {
|
export async function deleteOfflineNodes(): Promise<void> {
|
||||||
Logger
|
Logger
|
||||||
.tag('nodes', 'delete-offline')
|
.tag('nodes', 'delete-offline')
|
||||||
|
@ -676,10 +680,10 @@ export async function deleteOfflineNodes(): Promise<void> {
|
||||||
);
|
);
|
||||||
|
|
||||||
const deleteBefore =
|
const deleteBefore =
|
||||||
moment().subtract(
|
toUnixTimestamp(moment().subtract(
|
||||||
DELETE_OFFLINE_NODES_AFTER_DURATION.amount,
|
DELETE_OFFLINE_NODES_AFTER_DURATION.amount,
|
||||||
DELETE_OFFLINE_NODES_AFTER_DURATION.unit
|
DELETE_OFFLINE_NODES_AFTER_DURATION.unit
|
||||||
).unix();
|
));
|
||||||
|
|
||||||
await deleteNeverOnlineNodesBefore(deleteBefore);
|
await deleteNeverOnlineNodesBefore(deleteBefore);
|
||||||
await deleteNodesOfflineSinceBefore(deleteBefore);
|
await deleteNodesOfflineSinceBefore(deleteBefore);
|
||||||
|
@ -689,7 +693,7 @@ async function deleteNeverOnlineNodesBefore(deleteBefore: UnixTimestampSeconds):
|
||||||
Logger
|
Logger
|
||||||
.tag('nodes', 'delete-never-online')
|
.tag('nodes', 'delete-never-online')
|
||||||
.info(
|
.info(
|
||||||
'Deleting nodes that were never online created befor ' +
|
'Deleting nodes that were never online created before ' +
|
||||||
deleteBefore
|
deleteBefore
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,9 @@ import {
|
||||||
NodeStatistics,
|
NodeStatistics,
|
||||||
to,
|
to,
|
||||||
Token,
|
Token,
|
||||||
|
toUnixTimestampSeconds,
|
||||||
unhandledEnumField,
|
unhandledEnumField,
|
||||||
|
UnixTimestampMilliseconds,
|
||||||
UnixTimestampSeconds
|
UnixTimestampSeconds
|
||||||
} from "../types";
|
} from "../types";
|
||||||
import util from "util";
|
import util from "util";
|
||||||
|
@ -322,10 +324,14 @@ function setNodeValue(prefix: LINE_PREFIX, node: NodeBuilder, nodeSecrets: NodeS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function getModifiedAt(file: string): Promise<UnixTimestampSeconds> {
|
||||||
|
const modifiedAtMs = (await fs.lstat(file)).mtimeMs as UnixTimestampMilliseconds;
|
||||||
|
return toUnixTimestampSeconds(modifiedAtMs);
|
||||||
|
}
|
||||||
|
|
||||||
async function parseNodeFile(file: string): Promise<{ node: Node, nodeSecrets: NodeSecrets }> {
|
async function parseNodeFile(file: string): Promise<{ node: Node, nodeSecrets: NodeSecrets }> {
|
||||||
const contents = await fs.readFile(file);
|
const contents = await fs.readFile(file);
|
||||||
const stats = await fs.lstat(file);
|
const modifiedAt = await getModifiedAt(file);
|
||||||
const modifiedAt = Math.floor(stats.mtimeMs / 1000);
|
|
||||||
|
|
||||||
const lines = contents.toString().split("\n");
|
const lines = contents.toString().split("\n");
|
||||||
|
|
||||||
|
|
|
@ -293,8 +293,12 @@ export type MAC = {
|
||||||
};
|
};
|
||||||
export const isMAC = toIsNewtype<MAC>(isString);
|
export const isMAC = toIsNewtype<MAC>(isString);
|
||||||
|
|
||||||
export type UnixTimestampSeconds = number;
|
export type UnixTimestampSeconds = number & { readonly __tag: unique symbol };
|
||||||
export type UnixTimestampMilliseconds = number;
|
export type UnixTimestampMilliseconds = number & { readonly __tag: unique symbol };
|
||||||
|
|
||||||
|
export function toUnixTimestampSeconds(ms: UnixTimestampMilliseconds): UnixTimestampSeconds {
|
||||||
|
return Math.floor(ms) as UnixTimestampSeconds;
|
||||||
|
}
|
||||||
|
|
||||||
export type MonitoringToken = {
|
export type MonitoringToken = {
|
||||||
value: string;
|
value: string;
|
||||||
|
|
Loading…
Reference in a new issue