schema.ts•1.99 kB
import { sql } from "drizzle-orm";
import { pgTable, text, varchar, jsonb, boolean, timestamp } from "drizzle-orm/pg-core";
import { createInsertSchema } from "drizzle-zod";
import { z } from "zod";
export const users = pgTable("users", {
id: varchar("id").primaryKey().default(sql`gen_random_uuid()`),
username: text("username").notNull().unique(),
password: text("password").notNull(),
});
export const githubTokens = pgTable("github_tokens", {
id: varchar("id").primaryKey().default(sql`gen_random_uuid()`),
token: text("token").notNull(),
isActive: boolean("is_active").default(true),
createdAt: timestamp("created_at").defaultNow(),
updatedAt: timestamp("updated_at").defaultNow(),
});
export const toolExecutions = pgTable("tool_executions", {
id: varchar("id").primaryKey().default(sql`gen_random_uuid()`),
toolName: text("tool_name").notNull(),
parameters: jsonb("parameters"),
result: jsonb("result"),
status: text("status").notNull(),
executedAt: timestamp("executed_at").defaultNow(),
});
export const insertUserSchema = createInsertSchema(users).pick({
username: true,
password: true,
});
export const insertGithubTokenSchema = createInsertSchema(githubTokens).pick({
token: true,
});
export const insertToolExecutionSchema = createInsertSchema(toolExecutions).pick({
toolName: true,
parameters: true,
});
export type InsertUser = z.infer<typeof insertUserSchema>;
export type User = typeof users.$inferSelect;
export type GithubToken = typeof githubTokens.$inferSelect;
export type InsertGithubToken = z.infer<typeof insertGithubTokenSchema>;
export type ToolExecution = typeof toolExecutions.$inferSelect;
export type InsertToolExecution = z.infer<typeof insertToolExecutionSchema>;
export const validateTokenSchema = z.object({
token: z.string().min(1, "Token is required"),
});
export const executeToolSchema = z.object({
toolName: z.string().min(1, "Tool name is required"),
parameters: z.record(z.any()).optional(),
});