mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-09-15 07:36:27 -05:00
37 lines
842 B
TypeScript
37 lines
842 B
TypeScript
import type {
|
|
KyselyPlugin,
|
|
PluginTransformQueryArgs,
|
|
PluginTransformResultArgs,
|
|
QueryResult,
|
|
RootOperationNode,
|
|
UnknownRow,
|
|
} from "kysely";
|
|
|
|
let dirty = false;
|
|
|
|
/** Tracks writes so vitest teardown wipes only after a writing test and e2e workers flush caches only after factory writes. */
|
|
export class WriteTrackerPlugin implements KyselyPlugin {
|
|
transformQuery(args: PluginTransformQueryArgs): RootOperationNode {
|
|
if (args.node.kind !== "SelectQueryNode") {
|
|
dirty = true;
|
|
}
|
|
|
|
return args.node;
|
|
}
|
|
|
|
async transformResult(
|
|
args: PluginTransformResultArgs,
|
|
): Promise<QueryResult<UnknownRow>> {
|
|
return args.result;
|
|
}
|
|
}
|
|
|
|
/** Whether the database has been written to since the last {@link markDatabaseClean}. */
|
|
export function isDatabaseDirty() {
|
|
return dirty;
|
|
}
|
|
|
|
export function markDatabaseClean() {
|
|
dirty = false;
|
|
}
|