suicide monday

This commit is contained in:
cirroskais 2024-04-29 09:44:00 -04:00
parent 9c4c5e2171
commit 046521f116
No known key found for this signature in database
GPG key ID: 36FBC361DF481862
5 changed files with 92 additions and 61 deletions

View file

@ -1,49 +1,56 @@
datasource db { datasource db {
provider = "mysql" provider = "mysql"
url = env("DATABASE_URL") url = env("DATABASE_URL")
} }
generator client { generator client {
provider = "prisma-client-js" provider = "prisma-client-js"
} }
model User { model User {
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
username String @unique username String @unique
email String @unique email String @unique
password String password String
createdAt DateTime @default(now()) createdAt DateTime @default(now())
lastSeen DateTime @default(now()) lastSeen DateTime @default(now())
settings UserSettings? settings UserSettings?
uploads Upload[] // STORED AS MEGABYTES !!
sessions Session[] maxUpload Int @default(100)
uploads Upload[]
sessions Session[]
} }
model Session { model Session {
id String @id @unique id String @id @unique
user User @relation(fields: [userId], references: [id]) user User @relation(fields: [userId], references: [id])
userId Int userId Int
authorized Boolean authorized Boolean
createdAt DateTime @default(now()) createdAt DateTime @default(now())
expiresAt DateTime expiresAt DateTime
remoteAddress String? remoteAddress String?
} }
model UserSettings { model UserSettings {
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
user User @relation(fields: [userId], references: [id]) user User @relation(fields: [userId], references: [id])
userId Int @unique userId Int @unique
newPostsPublic Boolean @default(false) newPostsPublic Boolean @default(false)
linkToRaw Boolean @default(false)
embedTitle String
embedDescription String
embedColor Int
} }
model Upload { model Upload {
id String @id id String @id
uploader User @relation(fields: [uploaderId], references: [id]) uploader User @relation(fields: [uploaderId], references: [id])
uploaderId Int uploaderId Int
fileName String @unique fileName String @unique
public Boolean @default(false) public Boolean @default(false)
uploaded DateTime @default(now()) uploaded DateTime @default(now())
} }

View file

@ -1,5 +1,4 @@
<script> <script>
import { fade } from 'svelte/transition';
import { Mail, SquareAsterisk, Undo, User, UserPlus } from 'lucide-svelte'; import { Mail, SquareAsterisk, Undo, User, UserPlus } from 'lucide-svelte';
import { toast } from 'svelte-sonner'; import { toast } from 'svelte-sonner';
import { goto } from '$app/navigation'; import { goto } from '$app/navigation';
@ -10,10 +9,13 @@
import ButtonText from '$lib/components/Inputs/ButtonText.svelte'; import ButtonText from '$lib/components/Inputs/ButtonText.svelte';
import ButtonIcon from '$lib/components/Inputs/ButtonIcon.svelte'; import ButtonIcon from '$lib/components/Inputs/ButtonIcon.svelte';
export let callback; export let callback = () => {};
let disabled = false; let disabled = false;
let username, email, password, cpassword; let username = '',
email = '',
password = '',
cpassword = '';
async function register() { async function register() {
disabled = true; disabled = true;

View file

@ -0,0 +1,7 @@
/** @type {import("@sveltejs/kit").Load } */
export async function load({ fetch }) {
const response = await fetch('/api/statistics');
const statistics = await response.json();
return { statistics };
}

View file

@ -1,5 +1,6 @@
<script> <script>
import { Upload } from 'lucide-svelte'; import { Upload } from 'lucide-svelte';
import { page } from '$app/stores';
import { user } from '$lib/stores'; import { user } from '$lib/stores';
@ -11,34 +12,38 @@
user.set(data?.user); user.set(data?.user);
</script> </script>
<div class="w-96 h-[calc(100vh-4.5rem)] flex flex-col gap-2 mx-auto"> <div class="w-96 h-[calc(100vh-4.5rem)] flex mx-auto">
<div class="bg-crust w-full mx-auto mt-auto p-2 rounded-lg shadow-lg"> <div class="my-auto flex flex-col w-full gap-2">
<button class="w-full outline-2 outline-dotted outline-surface2 rounded-sm bg-mantle h-36 flex"> <div>
<div class="m-auto text-lg flex text-surface2"> <h1 class="text-2xl font-bold">Welcome, {$page.data.user.username}.</h1>
<Upload></Upload> <p class="text-overlay1">Your max upload size is <span class="font-bold">100 MB</span>.</p>
</div> </div>
</button> <div class="bg-crust w-full mx-auto p-2 rounded-lg shadow-lg">
</div> <button
<div class="bg-crust w-full mx-auto mb-auto p-2 rounded-lg shadow-lg"> class="w-full outline-2 outline-dotted outline-surface2 rounded-sm bg-mantle h-36 flex"
<table class="table-auto w-full mx-auto text-sm"> >
<tbody> <div class="m-auto text-lg flex text-surface2">
<tr> <Upload></Upload>
<td class="font-bold">Registered Users</td> </div>
<td class="text-right">100</td> </button>
</tr> </div>
<tr> <div class="bg-crust w-full mx-auto mb-auto p-2 rounded-lg shadow-lg">
<td class="font-bold">Files Hosted</td> <table class="table-auto w-full mx-auto text-sm">
<td class="text-right">100 Billion</td> <tbody>
</tr> <tr>
<tr> <td class="font-bold">Registered Users</td>
<td class="font-bold">File Storage</td> <td class="text-right">{data?.statistics?.users}</td>
<td class="text-right">1 TB</td> </tr>
</tr> <tr>
<tr> <td class="font-bold">Files Hosted</td>
<td class="font-bold">Max Upload Size</td> <td class="text-right">{data?.statistics?.files}</td>
<td class="text-right">100 MB</td> </tr>
</tr> <tr>
</tbody> <td class="font-bold">File Storage</td>
</table> <td class="text-right">{data?.statistics?.storage}</td>
</tr>
</tbody>
</table>
</div>
</div> </div>
</div> </div>

View file

@ -0,0 +1,10 @@
import { json } from '@sveltejs/kit';
/** @type {import("@sveltejs/kit").RequestHandler} */
export async function GET() {
return json({
users: ':3',
files: 'dick',
storage: '100 gigafarts'
});
}