Files
iptvnator/libs/shared/logging/src/lib/sql-trace-summary.ts
T
4gray 2ac0de752f fix(skills): align repository guidance with implementation (#1315)
* docs(skills): design implementation synchronization

* docs(skills): plan implementation synchronization

* fix(release): filter internal notes from public body

* docs(release): synchronize release workflow guidance

* fix(stalker): normalize catalog series flags

* fix(stalker): preserve progress with scoped episode IDs

* fix(playback): expose strict position persistence

* docs(stalker): record series position compatibility

* test(skills): validate repository skill contracts

* fix(database): keep SQL trace values private

* docs(skills): refresh Nx and SQLite ownership

* docs(skills): align provider and UI guidance

* docs(skills): tighten validated guidance

* docs(release): require exact release pushes

* style(electron): remove trailing blank line

* fix(ci): classify repository skills coverage
2026-07-31 08:00:59 +02:00

59 lines
1.5 KiB
TypeScript

export const SQL_TRACE_STATEMENT_TYPE = {
SELECT: 'SELECT',
INSERT: 'INSERT',
UPDATE: 'UPDATE',
DELETE: 'DELETE',
REPLACE: 'REPLACE',
CREATE: 'CREATE',
ALTER: 'ALTER',
DROP: 'DROP',
PRAGMA: 'PRAGMA',
WITH: 'WITH',
BEGIN: 'BEGIN',
COMMIT: 'COMMIT',
ROLLBACK: 'ROLLBACK',
SAVEPOINT: 'SAVEPOINT',
RELEASE: 'RELEASE',
VACUUM: 'VACUUM',
ANALYZE: 'ANALYZE',
REINDEX: 'REINDEX',
ATTACH: 'ATTACH',
DETACH: 'DETACH',
EXPLAIN: 'EXPLAIN',
OTHER: 'OTHER',
} as const;
export type SqlTraceStatementType =
(typeof SQL_TRACE_STATEMENT_TYPE)[keyof typeof SQL_TRACE_STATEMENT_TYPE];
export interface SqlTraceSummary {
statementType: SqlTraceStatementType;
}
const ALLOWED_STATEMENT_TYPES = new Set<SqlTraceStatementType>(
Object.values(SQL_TRACE_STATEMENT_TYPE).filter(
(statementType) =>
statementType !== SQL_TRACE_STATEMENT_TYPE.OTHER
) as SqlTraceStatementType[]
);
const SQL_STATEMENT_PREFIX = /^\s*([A-Za-z]+)(?=[\s(;]|$)/;
export function summarizeSqlStatementForTrace(sql: unknown): SqlTraceSummary {
if (typeof sql !== 'string') {
return { statementType: SQL_TRACE_STATEMENT_TYPE.OTHER };
}
const match = SQL_STATEMENT_PREFIX.exec(sql);
const candidate = match?.[1]?.toUpperCase() as
| SqlTraceStatementType
| undefined;
return {
statementType:
candidate && ALLOWED_STATEMENT_TYPES.has(candidate)
? candidate
: SQL_TRACE_STATEMENT_TYPE.OTHER,
};
}