Skip to content

Instantly share code, notes, and snippets.

@simonw
Created April 24, 2025 18:46
Show Gist options
  • Select an option

  • Save simonw/a49b4c3907286a544ed4cf8bb474f0ff to your computer and use it in GitHub Desktop.

Select an option

Save simonw/a49b4c3907286a544ed4cf8bb474f0ff to your computer and use it in GitHub Desktop.
CREATE TABLE "__drizzle_migrations" (
id SERIAL PRIMARY KEY,
hash text NOT NULL,
created_at numeric
);
CREATE TABLE `datasets` (
`id` text PRIMARY KEY NOT NULL,
`created_at` integer DEFAULT CURRENT_TIMESTAMP NOT NULL
, `tests` text);
CREATE TABLE `evals` (
`id` text PRIMARY KEY NOT NULL,
`created_at` integer DEFAULT CURRENT_TIMESTAMP NOT NULL,
`description` text,
`results` text NOT NULL,
`config` text NOT NULL
, `author` text, `prompts` text);
CREATE TABLE `evals_to_datasets` (
`eval_id` text NOT NULL,
`dataset_id` text NOT NULL,
PRIMARY KEY(`dataset_id`, `eval_id`),
FOREIGN KEY (`eval_id`) REFERENCES `evals`(`id`) ON UPDATE no action ON DELETE no action,
FOREIGN KEY (`dataset_id`) REFERENCES `datasets`(`id`) ON UPDATE no action ON DELETE no action
);
CREATE TABLE `evals_to_prompts` (
`eval_id` text NOT NULL,
`prompt_id` text NOT NULL,
PRIMARY KEY(`eval_id`, `prompt_id`),
FOREIGN KEY (`eval_id`) REFERENCES `evals`(`id`) ON UPDATE no action ON DELETE no action,
FOREIGN KEY (`prompt_id`) REFERENCES `prompts`(`id`) ON UPDATE no action ON DELETE no action
);
CREATE TABLE `prompts` (
`id` text PRIMARY KEY NOT NULL,
`created_at` integer DEFAULT CURRENT_TIMESTAMP NOT NULL,
`prompt` text NOT NULL);
CREATE INDEX `datasets_created_at_idx` ON `datasets` (`created_at`);
CREATE INDEX `evals_created_at_idx` ON `evals` (`created_at`);
CREATE INDEX `evals_author_idx` ON `evals` (`author`);
CREATE INDEX `evals_to_datasets_eval_id_idx` ON `evals_to_datasets` (`eval_id`);
CREATE INDEX `evals_to_datasets_dataset_id_idx` ON `evals_to_datasets` (`dataset_id`);
CREATE INDEX `evals_to_prompts_eval_id_idx` ON `evals_to_prompts` (`eval_id`);
CREATE INDEX `evals_to_prompts_prompt_id_idx` ON `evals_to_prompts` (`prompt_id`);
CREATE INDEX `prompts_created_at_idx` ON `prompts` (`created_at`);
CREATE TABLE `evals_to_tags` (
`eval_id` text NOT NULL,
`tag_id` text NOT NULL,
PRIMARY KEY(`eval_id`, `tag_id`),
FOREIGN KEY (`eval_id`) REFERENCES `evals`(`id`) ON UPDATE no action ON DELETE no action,
FOREIGN KEY (`tag_id`) REFERENCES `tags`(`id`) ON UPDATE no action ON DELETE no action
);
CREATE TABLE `tags` (
`id` text PRIMARY KEY NOT NULL,
`name` text NOT NULL,
`value` text NOT NULL
);
CREATE INDEX `evals_to_tags_eval_id_idx` ON `evals_to_tags` (`eval_id`);
CREATE INDEX `evals_to_tags_tag_id_idx` ON `evals_to_tags` (`tag_id`);
CREATE INDEX `tags_name_idx` ON `tags` (`name`);
CREATE UNIQUE INDEX `tags_name_value_unique` ON `tags` (`name`,`value`);
CREATE TABLE "eval_results"(
id TEXT,
created_at INT,
updated_at INT,
eval_id TEXT,
prompt_idx INT,
test_idx INT,
test_case TEXT,
prompt TEXT,
prompt_id TEXT,
provider TEXT,
latency_ms INT,
cost REAL,
response TEXT,
error TEXT,
success INT,
score REAL,
grading_result TEXT,
named_scores TEXT,
metadata TEXT
, `failure_reason` integer DEFAULT 0 NOT NULL);
CREATE TABLE `configs` (
`id` text PRIMARY KEY NOT NULL,
`created_at` integer DEFAULT CURRENT_TIMESTAMP NOT NULL,
`updated_at` integer DEFAULT CURRENT_TIMESTAMP NOT NULL,
`name` text NOT NULL,
`type` text NOT NULL,
`config` text NOT NULL
);
CREATE INDEX `configs_created_at_idx` ON `configs` (`created_at`);
CREATE INDEX `configs_type_idx` ON `configs` (`type`);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment