Fix login, registration and made the first database version.

This commit is contained in:
2024-11-05 19:51:56 +01:00
parent 83ddaf19d4
commit 1af78e5ab7
35 changed files with 180 additions and 391 deletions

View File

@@ -1,6 +1,3 @@
-- Current sql file was generated after introspecting the database
-- If you want to run this migration please uncomment this code before executing migrations
/*
CREATE TABLE `explorer_content` (
`path` text PRIMARY KEY NOT NULL,
`owner` integer NOT NULL,
@@ -22,6 +19,7 @@ CREATE TABLE `user_sessions` (
--> statement-breakpoint
CREATE TABLE `users_data` (
`id` integer PRIMARY KEY NOT NULL,
`signin` integer NOT NULL,
FOREIGN KEY (`id`) REFERENCES `users`(`id`) ON UPDATE cascade ON DELETE cascade
);
--> statement-breakpoint
@@ -30,14 +28,9 @@ CREATE TABLE `users` (
`username` text NOT NULL,
`email` text NOT NULL,
`hash` text NOT NULL,
`state` integer DEFAULT 0
`state` integer DEFAULT 0 NOT NULL
);
--> statement-breakpoint
CREATE UNIQUE INDEX `users_hash_unique` ON `users` (`hash`);--> statement-breakpoint
CREATE UNIQUE INDEX `users_email_unique` ON `users` (`email`);--> statement-breakpoint
CREATE UNIQUE INDEX `users_username_unique` ON `users` (`username`);--> statement-breakpoint
CREATE TABLE `__drizzle_migrations` (
);
*/
CREATE UNIQUE INDEX `users_email_unique` ON `users` (`email`);--> statement-breakpoint
CREATE UNIQUE INDEX `users_hash_unique` ON `users` (`hash`);

View File

@@ -1,18 +0,0 @@
DROP TABLE `__drizzle_migrations`;--> statement-breakpoint
PRAGMA foreign_keys=OFF;--> statement-breakpoint
CREATE TABLE `__new_users` (
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
`username` text NOT NULL,
`email` text NOT NULL,
`hash` text NOT NULL,
`state` integer DEFAULT 0 NOT NULL
);
--> statement-breakpoint
INSERT INTO `__new_users`("id", "username", "email", "hash", "state") SELECT "id", "username", "email", "hash", "state" FROM `users`;--> statement-breakpoint
DROP TABLE `users`;--> statement-breakpoint
ALTER TABLE `__new_users` RENAME TO `users`;--> statement-breakpoint
PRAGMA foreign_keys=ON;--> statement-breakpoint
CREATE UNIQUE INDEX `users_username_unique` ON `users` (`username`);--> statement-breakpoint
CREATE UNIQUE INDEX `users_email_unique` ON `users` (`email`);--> statement-breakpoint
CREATE UNIQUE INDEX `users_hash_unique` ON `users` (`hash`);--> statement-breakpoint
ALTER TABLE `users_data` ADD `signin` integer NOT NULL;

View File

@@ -0,0 +1,6 @@
CREATE TABLE `user_permissions` (
`id` integer NOT NULL,
`permissions` text NOT NULL,
PRIMARY KEY(`id`, `permissions`),
FOREIGN KEY (`id`) REFERENCES `users`(`id`) ON UPDATE cascade ON DELETE cascade
);

View File

@@ -1,65 +1,64 @@
{
"id": "00000000-0000-0000-0000-000000000000",
"prevId": "",
"version": "6",
"dialect": "sqlite",
"id": "f66f1f97-ceb3-46ed-988b-62828fe4a6a6",
"prevId": "00000000-0000-0000-0000-000000000000",
"tables": {
"explorer_content": {
"name": "explorer_content",
"columns": {
"path": {
"autoincrement": false,
"name": "path",
"type": "text",
"primaryKey": true,
"notNull": true
"notNull": true,
"autoincrement": false
},
"owner": {
"autoincrement": false,
"name": "owner",
"type": "integer",
"primaryKey": false,
"notNull": true
"notNull": true,
"autoincrement": false
},
"title": {
"autoincrement": false,
"name": "title",
"type": "text",
"primaryKey": false,
"notNull": true
"notNull": true,
"autoincrement": false
},
"type": {
"autoincrement": false,
"name": "type",
"type": "text",
"primaryKey": false,
"notNull": true
"notNull": true,
"autoincrement": false
},
"content": {
"autoincrement": false,
"name": "content",
"type": "blob",
"primaryKey": false,
"notNull": false
"notNull": false,
"autoincrement": false
},
"navigable": {
"default": true,
"autoincrement": false,
"name": "navigable",
"type": "integer",
"primaryKey": false,
"notNull": false
"notNull": false,
"autoincrement": false,
"default": true
},
"private": {
"default": false,
"autoincrement": false,
"name": "private",
"type": "integer",
"primaryKey": false,
"notNull": false
"notNull": false,
"autoincrement": false,
"default": false
}
},
"compositePrimaryKeys": {},
"indexes": {},
"foreignKeys": {
"explorer_content_owner_users_id_fk": {
@@ -76,6 +75,7 @@
"onUpdate": "cascade"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
@@ -83,34 +83,25 @@
"name": "user_sessions",
"columns": {
"id": {
"autoincrement": false,
"name": "id",
"type": "integer",
"primaryKey": false,
"notNull": true
"notNull": true,
"autoincrement": false
},
"user_id": {
"autoincrement": false,
"name": "user_id",
"type": "integer",
"primaryKey": false,
"notNull": true
"notNull": true,
"autoincrement": false
},
"timestamp": {
"autoincrement": false,
"name": "timestamp",
"type": "integer",
"primaryKey": false,
"notNull": true
}
},
"compositePrimaryKeys": {
"user_sessions_id_user_id_pk": {
"columns": [
"id",
"user_id"
],
"name": "user_sessions_id_user_id_pk"
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
@@ -129,6 +120,15 @@
"onUpdate": "cascade"
}
},
"compositePrimaryKeys": {
"user_sessions_id_user_id_pk": {
"columns": [
"id",
"user_id"
],
"name": "user_sessions_id_user_id_pk"
}
},
"uniqueConstraints": {},
"checkConstraints": {}
},
@@ -136,14 +136,20 @@
"name": "users_data",
"columns": {
"id": {
"autoincrement": false,
"name": "id",
"type": "integer",
"primaryKey": true,
"notNull": true
"notNull": true,
"autoincrement": false
},
"signin": {
"name": "signin",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"compositePrimaryKeys": {},
"indexes": {},
"foreignKeys": {
"users_data_id_users_id_fk": {
@@ -160,6 +166,7 @@
"onUpdate": "cascade"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
@@ -167,48 +174,47 @@
"name": "users",
"columns": {
"id": {
"autoincrement": true,
"name": "id",
"type": "integer",
"primaryKey": true,
"notNull": true
"notNull": true,
"autoincrement": true
},
"username": {
"autoincrement": false,
"name": "username",
"type": "text",
"primaryKey": false,
"notNull": true
"notNull": true,
"autoincrement": false
},
"email": {
"autoincrement": false,
"name": "email",
"type": "text",
"primaryKey": false,
"notNull": true
"notNull": true,
"autoincrement": false
},
"hash": {
"autoincrement": false,
"name": "hash",
"type": "text",
"primaryKey": false,
"notNull": true
"notNull": true,
"autoincrement": false
},
"state": {
"default": 0,
"autoincrement": false,
"name": "state",
"type": "integer",
"primaryKey": false,
"notNull": false
"notNull": true,
"autoincrement": false,
"default": 0
}
},
"compositePrimaryKeys": {},
"indexes": {
"users_hash_unique": {
"name": "users_hash_unique",
"users_username_unique": {
"name": "users_username_unique",
"columns": [
"hash"
"username"
],
"isUnique": true
},
@@ -219,24 +225,16 @@
],
"isUnique": true
},
"users_username_unique": {
"name": "users_username_unique",
"users_hash_unique": {
"name": "users_hash_unique",
"columns": [
"username"
"hash"
],
"isUnique": true
}
},
"foreignKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"__drizzle_migrations": {
"name": "__drizzle_migrations",
"columns": {},
"compositePrimaryKeys": {},
"indexes": {},
"foreignKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
}
@@ -247,5 +245,8 @@
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"indexes": {}
}
}

View File

@@ -1,8 +1,8 @@
{
"version": "6",
"dialect": "sqlite",
"id": "0cca5664-1a0e-48ef-b70a-966b7a8142c7",
"prevId": "00000000-0000-0000-0000-000000000000",
"id": "854cab71-b937-4f4f-80b0-cbb09c7b5944",
"prevId": "f66f1f97-ceb3-46ed-988b-62828fe4a6a6",
"tables": {
"explorer_content": {
"name": "explorer_content",
@@ -79,6 +79,52 @@
"uniqueConstraints": {},
"checkConstraints": {}
},
"user_permissions": {
"name": "user_permissions",
"columns": {
"id": {
"name": "id",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"permissions": {
"name": "permissions",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"user_permissions_id_users_id_fk": {
"name": "user_permissions_id_users_id_fk",
"tableFrom": "user_permissions",
"tableTo": "users",
"columnsFrom": [
"id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "cascade"
}
},
"compositePrimaryKeys": {
"user_permissions_id_permissions_pk": {
"columns": [
"id",
"permissions"
],
"name": "user_permissions_id_permissions_pk"
}
},
"uniqueConstraints": {},
"checkConstraints": {}
},
"user_sessions": {
"name": "user_sessions",
"columns": {

View File

@@ -5,15 +5,15 @@
{
"idx": 0,
"version": "6",
"when": 1730822816801,
"tag": "0000_lonely_the_renegades",
"when": 1730829864576,
"tag": "0000_needy_rictor",
"breakpoints": true
},
{
"idx": 1,
"version": "6",
"when": 1730826510693,
"tag": "0001_lush_selene",
"when": 1730832678255,
"tag": "0001_sticky_jack_flag",
"breakpoints": true
}
]

View File

@@ -1,29 +0,0 @@
import { relations } from "drizzle-orm/relations";
import { users, explorerContent, userSessions, usersData } from "./schema";
export const explorerContentRelations = relations(explorerContent, ({one}) => ({
user: one(users, {
fields: [explorerContent.owner],
references: [users.id]
}),
}));
export const usersRelations = relations(users, ({many}) => ({
explorerContents: many(explorerContent),
userSessions: many(userSessions),
usersData: many(usersData),
}));
export const userSessionsRelations = relations(userSessions, ({one}) => ({
user: one(users, {
fields: [userSessions.userId],
references: [users.id]
}),
}));
export const usersDataRelations = relations(usersData, ({one}) => ({
user: one(users, {
fields: [usersData.id],
references: [users.id]
}),
}));

View File

@@ -1,46 +0,0 @@
import { sqliteTable, AnySQLiteColumn, foreignKey, text, integer, blob, primaryKey, uniqueIndex } from "drizzle-orm/sqlite-core"
import { sql } from "drizzle-orm"
export const explorerContent = sqliteTable("explorer_content", {
path: text().primaryKey().notNull(),
owner: integer().notNull().references(() => users.id, { onDelete: "cascade", onUpdate: "cascade" } ),
title: text().notNull(),
type: text().notNull(),
content: blob(),
navigable: integer().default(true),
private: integer().default(false),
});
export const userSessions = sqliteTable("user_sessions", {
id: integer().notNull(),
userId: integer("user_id").notNull().references(() => users.id, { onDelete: "cascade", onUpdate: "cascade" } ),
timestamp: integer().notNull(),
},
(table) => {
return {
pk0: primaryKey({ columns: [table.id, table.userId], name: "user_sessions_id_user_id_pk"})
}
});
export const usersData = sqliteTable("users_data", {
id: integer().primaryKey().notNull().references(() => users.id, { onDelete: "cascade", onUpdate: "cascade" } ),
});
export const users = sqliteTable("users", {
id: integer().primaryKey({ autoIncrement: true }).notNull(),
username: text().notNull(),
email: text().notNull(),
hash: text().notNull(),
state: integer().default(0),
},
(table) => {
return {
hashUnique: uniqueIndex("users_hash_unique").on(table.hash),
emailUnique: uniqueIndex("users_email_unique").on(table.email),
usernameUnique: uniqueIndex("users_username_unique").on(table.username),
}
});
export const drizzleMigrations = sqliteTable("__drizzle_migrations", {
});