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

/**
* 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;
}