More progress

This commit is contained in:
cte 2025-03-19 23:20:07 -07:00
parent 0c866107ed
commit fcc1bce4b1
10 changed files with 40 additions and 25 deletions

View file

@ -81,7 +81,6 @@ const runExercise = async ({ run, language, exercise }: { run: Run; language: La
}
console.log(`Running ${language} / ${exercise}`)
return true
await runTests({
extensionDevelopmentPath,

View file

@ -1,6 +1,6 @@
import { drizzle } from "drizzle-orm/libsql"
import { schema } from "./schema"
import { schema } from "./schema.js"
export const db = drizzle({
schema,

View file

@ -1,15 +1,17 @@
export { db } from "./db"
export { type Language, languages } from "./enums"
export { schema } from "./schema"
export { db } from "./db.js"
export { type Language, languages } from "./enums.js"
export { schema } from "./schema.js"
/**
* runs
*/
export { type Run, insertRunSchema } from "./schema"
export { findRun, createRun, getRuns } from "./queries/runs"
export { type Run, insertRunSchema } from "./schema.js"
export { findRun, createRun, getRuns } from "./queries/runs.js"
/**
* tasks
*/
export { type Task, insertTaskSchema } from "./schema"
export { findTask, createTask, getTask } from "./queries/tasks"
export { type Task, insertTaskSchema } from "./schema.js"
export { findTask, createTask, getTask } from "./queries/tasks.js"

View file

@ -1 +1,3 @@
export class RecordNotFoundError extends Error {}
export class RecordNotCreatedError extends Error {}

View file

@ -1,9 +1,9 @@
import { desc, eq, sql } from "drizzle-orm"
import { db } from "../db"
import { InsertRun, insertRunSchema, runs, tasks } from "../schema"
import { db } from "../db.js"
import { type InsertRun, insertRunSchema, runs, tasks } from "../schema.js"
import { RecordNotFoundError } from "./errors"
import { RecordNotFoundError, RecordNotCreatedError } from "./errors.js"
export const findRun = async (id: number) => {
const run = await db.query.runs.findFirst({ where: eq(runs.id, id) })
@ -24,7 +24,13 @@ export const createRun = async (args: InsertRun) => {
})
.returning()
return result[0]
const run = result[0]
if (!run) {
throw new RecordNotCreatedError()
}
return run
}
export const getRuns = () =>

View file

@ -1,10 +1,10 @@
import { and, eq } from "drizzle-orm"
import { db } from "../db"
import { InsertTask, insertTaskSchema, tasks } from "../schema"
import { db } from "../db.js"
import { type InsertTask, insertTaskSchema, tasks } from "../schema.js"
import { RecordNotFoundError } from "./errors"
import { Language } from "../enums"
import { type Language } from "../enums.js"
import { RecordNotFoundError, RecordNotCreatedError } from "./errors.js"
export const findTask = async (id: number) => {
const run = await db.query.tasks.findFirst({ where: eq(tasks.id, id) })
@ -25,7 +25,13 @@ export const createTask = async (args: InsertTask) => {
})
.returning()
return result[0]
const task = result[0]
if (!task) {
throw new RecordNotCreatedError()
}
return task
}
export const getTask = async ({ runId, language, exercise }: { runId: number; language: Language; exercise: string }) =>

View file

@ -3,7 +3,7 @@ import * as t from "drizzle-orm/sqlite-core"
import { createInsertSchema } from "drizzle-zod"
import { z } from "zod"
import { languages } from "./enums"
import { languages } from "./enums.js"
/**
* runs

View file

@ -1,6 +1,6 @@
import ipc from "node-ipc"
import { ClientMessage, ClientMessageType, ServerMessageType, serverMessageSchema } from "./schemas"
import { ClientMessage, ClientMessageType, ServerMessageType, serverMessageSchema } from "./types.js"
export class IpcClient {
private readonly _socketPath: string
@ -15,9 +15,9 @@ export class IpcClient {
ipc.config.silent = true
ipc.connectTo("benchmarkServer", this.socketPath, () => {
ipc.of.benchmarkServer.on("connect", (args) => this.onConnect(args))
ipc.of.benchmarkServer.on("message", (data) => this.onMessage(data))
ipc.of.benchmarkServer.on("disconnect", (args) => this.onDisconnect(args))
ipc.of.benchmarkServer?.on("connect", (args) => this.onConnect(args))
ipc.of.benchmarkServer?.on("message", (data) => this.onMessage(data))
ipc.of.benchmarkServer?.on("disconnect", (args) => this.onDisconnect(args))
})
}
@ -58,7 +58,7 @@ export class IpcClient {
}
public sendMessage(message: ClientMessage) {
ipc.of.benchmarkServer.emit("message", message)
ipc.of.benchmarkServer?.emit("message", message)
}
public ping() {

View file

@ -4,7 +4,7 @@ import * as os from "node:os"
import * as path from "node:path"
import * as crypto from "node:crypto"
import { ClientMessageType, ServerMessage, ServerMessageType, clientMessageSchema } from "./schemas"
import { ClientMessageType, ServerMessage, ServerMessageType, clientMessageSchema } from "./types.js"
export class IpcServer {
private _isListening = false