import { column, idColumn, schema, table } from "../../src/schema"; export const v1 = schema({ version: "1.0.0", tables: { users: table("users", { id: idColumn("id", "varchar(255)").defaultTo$("auto"), name: column("name", "string"), }), messages: table("messages", { id: idColumn("id", "varchar(255)").defaultTo$("auto"), user: column("user", "varchar(255)"), content: column("content", "string").defaultTo("default content."), parent: column("parent", "varchar(255)").nullable(), image: column("image", "binary").nullable(), // for testing one-to-one mentionId: column("mention_id", "varchar(255)").nullable().unique(), }), posts: table("posts", { id: idColumn("id", "uuid"), title: column("title", "string"), metadata: column("metadata", "json"), }), }, relations: { users: ({ many }) => ({ messages: many("messages"), }), messages: ({ one }) => ({ author: one("users", ["user", "id"]).foreignKey(), mentioning: one("messages", ["mentionId", "id"]) .foreignKey() .imply("mentionedBy"), mentionedBy: one("messages"), }), },});
import { column, idColumn, schema, table } from "../../src/schema";
export const v1 = schema({
version: "1.0.0",
tables: {
users: table("users", {
id: idColumn("id", "varchar(255)").defaultTo$("auto"),
name: column("name", "string"),
}),
messages: table("messages", {
id: idColumn("id", "varchar(255)").defaultTo$("auto"),
user: column("user", "varchar(255)"),
content: column("content", "string").defaultTo("default content."),
parent: column("parent", "varchar(255)").nullable(),
image: column("image", "binary").nullable(),
// for testing one-to-one
mentionId: column("mention_id", "varchar(255)").nullable().unique(),
}),
posts: table("posts", {
id: idColumn("id", "uuid"),
title: column("title", "string"),
metadata: column("metadata", "json"),
}),
},
relations: {
users: ({ many }) => ({
messages: many("messages"),
}),
messages: ({ one }) => ({
author: one("users", ["user", "id"]).foreignKey(),
mentioning: one("messages", ["mentionId", "id"])
.foreignKey()
.imply("mentionedBy"),
mentionedBy: one("messages"),
}),
},
});