Skip to content

Commit

Permalink
Switch to drizzle config
Browse files Browse the repository at this point in the history
  • Loading branch information
willnode committed Jul 20, 2024
1 parent 14badf3 commit 8888458
Show file tree
Hide file tree
Showing 12 changed files with 1,029 additions and 337 deletions.
6 changes: 5 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
AUTH_SECRET=
AUTH_SECRET=
DB_HOST=
DB_USERNAME=
DB_PASSWORD=
DB_NAME=
3 changes: 0 additions & 3 deletions astro.config.mjs
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
import { defineConfig } from "astro/config";
import node from "@astrojs/node";
import tailwind from "@astrojs/tailwind";
import db from "@astrojs/db";

import react from "@astrojs/react";

// https://astro.build/config
export default defineConfig({
integrations: [
db(),
tailwind({
applyBaseStyles: false,
}),
Expand Down
203 changes: 0 additions & 203 deletions db/config.ts

This file was deleted.

14 changes: 14 additions & 0 deletions drizzle.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import {defineConfig} from 'drizzle-kit';

export default defineConfig({
schema: './src/db/schema.ts',
out: './drizzle',
dialect: 'mysql',
dbCredentials: {
user: process.env.DB_USERNAME || 'root',
password: process.env.DB_PASSWORD || '',
host: process.env.DB_HOST || 'localhost',
port: parseInt(process.env.DB_PORT || '3306'),
database: process.env.DB_NAME || 'oneform_db',
},
});
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
},
"dependencies": {
"@astrojs/check": "^0.7.0",
"@astrojs/db": "^0.11.7",
"@astrojs/node": "^8.3.2",
"@astrojs/react": "^3.6.0",
"@astrojs/tailwind": "^5.1.0",
Expand All @@ -20,6 +19,7 @@
"@hookform/resolvers": "^3.9.0",
"@libsql/client": "^0.7.0",
"@material-tailwind/html": "^2.2.2",
"@measured/puck": "^0.15.0",
"@radix-ui/react-checkbox": "^1.1.1",
"@radix-ui/react-dropdown-menu": "^2.1.1",
"@radix-ui/react-label": "^2.1.0",
Expand All @@ -32,11 +32,14 @@
"bcryptjs": "^2.4.3",
"class-variance-authority": "^0.7.0",
"clsx": "^2.1.1",
"drizzle-kit": "^0.23.0",
"drizzle-orm": "^0.32.0",
"flat": "^6.0.1",
"hono": "^4.4.12",
"jexl": "^2.3.0",
"jsonwebtoken": "^9.0.2",
"lucide-react": "^0.403.0",
"mysql2": "^3.10.3",
"next-themes": "^0.3.0",
"papaparse": "^5.4.1",
"react": "^18.3.1",
Expand Down
3 changes: 2 additions & 1 deletion src/api/auth.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Hono, type Context } from "hono";
import { z, ZodError } from "zod";
import { Team, User, UserAuth, and, db, eq } from "astro:db";
import { User, UserAuth, Team } from "@/db/schema";
import db from "@/lib/db";
import query from "../lib/query";
import { encryptPW, rError, rOK } from "./helper";
import * as cookie from "hono/cookie";
Expand Down
100 changes: 100 additions & 0 deletions src/db/schema.mysql.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
import { mysqlTable, varchar, text, timestamp, index, uniqueIndex, int, json } from "drizzle-orm/mysql-core";

export const User = mysqlTable("user", {
id: varchar("id", { length: 26 }).primaryKey(),
email: varchar("email", { length: 45 }).notNull().unique(),
name: text("name").notNull(),
created: timestamp("created", {
mode: 'string'
}).defaultNow(),
modified: timestamp("modified", {
mode: 'string'
}).defaultNow(),
});

export const UserAuth = mysqlTable("user_auth", {
id: varchar("id", { length: 26 }).primaryKey(),
userId: varchar("user_id", { length: 26 }).references(() => User.id).notNull(),
type: varchar("type", { length: 255 }).notNull(),
identifier: varchar("identifier", { length: 255 }).notNull(),
},
(table) => {
return {
identiferIdx: uniqueIndex("type_indefier_idx").on(
table.type,
table.identifier
),
userTypeIdx: uniqueIndex("user_type_idx").on(table.userId, table.type),
};
});


export const Team = mysqlTable("team", {
id: varchar("id", { length: 26 }).primaryKey(),
userId: varchar("user_id", { length: 26 }).references(() => User.id).unique(),
storageSize: int("storage_size").default(0),
});

export const Form = mysqlTable("form", {
id: varchar("id", { length: 26 }).primaryKey(),
teamId: varchar("team_id", { length: 26 }).references(() => Team.id).notNull(),
title: text("title"),
schema: json("schema"),
config: json("config"),
created: timestamp("created").defaultNow(),
modified: timestamp("modified").defaultNow(),
privilenge: text("privilenge"),
});

export const Format = mysqlTable("format", {
id: varchar("id", { length: 26 }).primaryKey(),
formId: varchar("form_id", { length: 26 }).references(() => Form.id).notNull(),
title: text("title"),
teamId: varchar("team_id", { length: 26 }).references(() => Team.id).notNull(),
type: text("type"),
schema: json("schema"),
privilenge: text("privilenge"),
created: timestamp("created").defaultNow(),
modified: timestamp("modified").defaultNow(),
});
export const Hook = mysqlTable("hook", {
id: varchar("id", { length: 26 }).primaryKey(),
formId: varchar("form_id", { length: 26 }).references(() => Form.id).notNull(),
teamId: varchar("team_id", { length: 26 }).references(() => Team.id).notNull(),
formatId: varchar("format_id", { length: 26 }).references(() => Format.id).notNull(),
title: text("title"),
type: text("type"),
status: text("status"),
created: timestamp("created").defaultNow(),
modified: timestamp("modified").defaultNow(),
});

export const File = mysqlTable("file", {
id: varchar("id", { length: 26 }).primaryKey(),
formId: varchar("form_id", { length: 26 }).references(() => Form.id).notNull(),
authorId: varchar("author_id", { length: 26 }).references(() => User.id).notNull(),
teamId: varchar("team_id", { length: 26 }).references(() => Team.id).notNull(),
size: int("size"),
type: text("type"),
name: text("name"),
path: text("path"),
created: timestamp("created").defaultNow(),
modified: timestamp("modified").defaultNow(),
});
export const Entry = mysqlTable("entry", {
id: varchar("id", { length: 26 }).primaryKey(),
formId: varchar("form_id", { length: 26 }).references(() => Form.id).notNull(),
authorId: varchar("author_id", { length: 26 }).references(() => User.id),
data: json("data"),
created: timestamp("created").defaultNow(),
modified: timestamp("modified").defaultNow(),
});
export const EntryHook = mysqlTable("entry_hook", {
id: varchar("id", { length: 26 }).primaryKey(),
entryId: varchar("entry_id", { length: 26 }).references(() => Entry.id).notNull(),
hookId: varchar("hook_id", { length: 26 }).references(() => Hook.id).notNull(),
status: text("status"),
created: timestamp("created").defaultNow(),
modified: timestamp("modified").defaultNow(),
});

1 change: 1 addition & 0 deletions src/db/schema.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './schema.mysql';
3 changes: 2 additions & 1 deletion db/seed.ts → src/db/seed.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { User, UserAuth, Team, Form, db, Entry, Format } from "astro:db";
import { User, UserAuth, Team, Form, Entry, Format } from "./schema";
import { ulid } from "ulid";
import { encryptPW } from "@/api/helper";
import db from "@/lib/db";

// https://astro.build/db/seed
export default async function seed() {
Expand Down
Loading

0 comments on commit 8888458

Please sign in to comment.