You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
2.3 KiB
128 lines
2.3 KiB
/**
|
|
* Worker Message Interface for Database Operations
|
|
*
|
|
* Defines the communication protocol between the main thread and the
|
|
* SQL worker thread for TimeSafari web platform.
|
|
*
|
|
* @author Matthew Raymer
|
|
* @version 1.0.0
|
|
* @since 2025-07-02
|
|
*/
|
|
|
|
import type { QueryExecResult } from "./database";
|
|
|
|
/**
|
|
* Base interface for all worker messages
|
|
*/
|
|
interface BaseWorkerMessage {
|
|
id: string;
|
|
type: string;
|
|
}
|
|
|
|
/**
|
|
* Database query request message
|
|
*/
|
|
export interface QueryRequest extends BaseWorkerMessage {
|
|
type: "query";
|
|
sql: string;
|
|
params?: unknown[];
|
|
}
|
|
|
|
/**
|
|
* Database execution request message (INSERT, UPDATE, DELETE, etc.)
|
|
*/
|
|
export interface ExecRequest extends BaseWorkerMessage {
|
|
type: "exec";
|
|
sql: string;
|
|
params?: unknown[];
|
|
}
|
|
|
|
/**
|
|
* Database get one row request message
|
|
*/
|
|
export interface GetOneRowRequest extends BaseWorkerMessage {
|
|
type: "getOneRow";
|
|
sql: string;
|
|
params?: unknown[];
|
|
}
|
|
|
|
/**
|
|
* Database initialization request message
|
|
*/
|
|
export interface InitRequest extends BaseWorkerMessage {
|
|
type: "init";
|
|
}
|
|
|
|
/**
|
|
* Health check request message
|
|
*/
|
|
export interface PingRequest extends BaseWorkerMessage {
|
|
type: "ping";
|
|
}
|
|
|
|
/**
|
|
* Union type of all possible request messages
|
|
*/
|
|
export type WorkerRequest =
|
|
| QueryRequest
|
|
| ExecRequest
|
|
| GetOneRowRequest
|
|
| InitRequest
|
|
| PingRequest;
|
|
|
|
/**
|
|
* Success response from worker
|
|
*/
|
|
export interface SuccessResponse extends BaseWorkerMessage {
|
|
type: "success";
|
|
data: unknown;
|
|
}
|
|
|
|
/**
|
|
* Error response from worker
|
|
*/
|
|
export interface ErrorResponse extends BaseWorkerMessage {
|
|
type: "error";
|
|
error: {
|
|
message: string;
|
|
stack?: string;
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Initialization complete response
|
|
*/
|
|
export interface InitCompleteResponse extends BaseWorkerMessage {
|
|
type: "init-complete";
|
|
}
|
|
|
|
/**
|
|
* Ping response
|
|
*/
|
|
export interface PongResponse extends BaseWorkerMessage {
|
|
type: "pong";
|
|
}
|
|
|
|
/**
|
|
* Union type of all possible response messages
|
|
*/
|
|
export type WorkerResponse =
|
|
| SuccessResponse
|
|
| ErrorResponse
|
|
| InitCompleteResponse
|
|
| PongResponse;
|
|
|
|
/**
|
|
* Query result type specifically for database queries
|
|
*/
|
|
export interface QueryResult {
|
|
result: QueryExecResult[];
|
|
}
|
|
|
|
/**
|
|
* Execution result type for database modifications
|
|
*/
|
|
export interface ExecResult {
|
|
changes: number;
|
|
lastId?: number;
|
|
}
|
|
|