Working on v2

This commit is contained in:
2025-12-16 19:45:13 +01:00
parent ab4a679851
commit 064e20ddc3
109 changed files with 1343 additions and 3426 deletions

View File

@@ -1,4 +0,0 @@
export default defineEventHandler(async (event) => {
const { discord } = useRuntimeConfig(event)
return await $fetch(`https://api.lanyard.rest/v1/users/${discord.userId}`)
})

View File

@@ -1,17 +0,0 @@
import { useValidatedParams, z } from 'h3-zod'
export default defineEventHandler(async (event) => {
const { slug } = await useValidatedParams(event, {
slug: z.string(),
})
return useDB().insert(tables.posts).values({
slug,
}).onConflictDoUpdate({
target: tables.posts.slug,
set: {
slug,
views: sql`${tables.posts.views}
+ 1`,
},
}).returning().get()
})

View File

@@ -1,3 +0,0 @@
export default defineEventHandler(() => {
return useDB().query.posts.findMany()
})

View File

@@ -1,11 +0,0 @@
import { useValidatedParams, z } from 'h3-zod'
export default defineEventHandler(async (event) => {
const { slug } = await useValidatedParams(event, {
slug: z.string(),
})
return useDB().update(tables.posts).set({
likes: sql`${tables.posts.likes}
+ 1`,
}).where(eq(tables.posts.slug, slug))
})

View File

@@ -1,57 +0,0 @@
import type { H3Event } from 'h3'
const cachedWakatimeCoding = defineCachedFunction(async (event: H3Event) => {
const config = useRuntimeConfig(event)
return await $fetch(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.coding}.json`)
}, {
maxAge: 24 * 60 * 60,
name: 'wakatime',
getKey: () => 'coding',
})
const cachedWakatimeEditors = defineCachedFunction(async (event: H3Event) => {
const config = useRuntimeConfig(event)
return await $fetch(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.editors}.json`)
}, {
maxAge: 24 * 60 * 60,
name: 'wakatime',
getKey: () => 'editors',
})
const cachedWakatimeOs = defineCachedFunction(async (event: H3Event) => {
const config = useRuntimeConfig(event)
return await $fetch(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.os}.json`)
}, {
maxAge: 24 * 60 * 60,
name: 'wakatime',
getKey: () => 'os',
})
const cachedWakatimeLanguages = defineCachedFunction(async (event: H3Event) => {
const config = useRuntimeConfig(event)
return await $fetch(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.languages}.json`)
}, {
maxAge: 24 * 60 * 60,
name: 'wakatime',
getKey: () => 'languages',
})
export default defineEventHandler(async (event) => {
const [coding, editors, os, languages] = await Promise.all([
cachedWakatimeCoding(event),
cachedWakatimeEditors(event),
cachedWakatimeOs(event),
cachedWakatimeLanguages(event),
])
return {
coding,
editors,
os,
languages,
}
})

View File

@@ -1,17 +0,0 @@
CREATE TABLE `maintenances`
(
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
`reason` text DEFAULT '',
`enabled` integer DEFAULT false NOT NULL,
`begin_at` text DEFAULT (CURRENT_DATE),
`end_at` text DEFAULT (CURRENT_DATE),
`created_at` text DEFAULT (CURRENT_DATE)
);
--> statement-breakpoint
CREATE TABLE `posts`
(
`slug` text PRIMARY KEY NOT NULL,
`likes` integer DEFAULT 0,
`views` integer DEFAULT 0,
`created_at` text DEFAULT (CURRENT_DATE)
);

View File

@@ -1 +0,0 @@
DROP TABLE `maintenances`;

View File

@@ -1,113 +0,0 @@
{
"version": "6",
"dialect": "sqlite",
"id": "5dde5f5f-fedf-456b-aea6-3c2cceb8d134",
"prevId": "00000000-0000-0000-0000-000000000000",
"tables": {
"maintenances": {
"name": "maintenances",
"columns": {
"id": {
"name": "id",
"type": "integer",
"primaryKey": true,
"notNull": true,
"autoincrement": true
},
"reason": {
"name": "reason",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": "''"
},
"enabled": {
"name": "enabled",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"begin_at": {
"name": "begin_at",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": "(CURRENT_DATE)"
},
"end_at": {
"name": "end_at",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": "(CURRENT_DATE)"
},
"created_at": {
"name": "created_at",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": "(CURRENT_DATE)"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
},
"posts": {
"name": "posts",
"columns": {
"slug": {
"name": "slug",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"likes": {
"name": "likes",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": 0
},
"views": {
"name": "views",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": 0
},
"created_at": {
"name": "created_at",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": "(CURRENT_DATE)"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
}
},
"enums": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"indexes": {}
}
}

View File

@@ -1,57 +0,0 @@
{
"version": "6",
"dialect": "sqlite",
"id": "7e595d89-47b1-434d-a021-01a64f4f54dc",
"prevId": "5dde5f5f-fedf-456b-aea6-3c2cceb8d134",
"tables": {
"posts": {
"name": "posts",
"columns": {
"slug": {
"name": "slug",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"likes": {
"name": "likes",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": 0
},
"views": {
"name": "views",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": 0
},
"created_at": {
"name": "created_at",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": "(CURRENT_DATE)"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
}
},
"enums": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"indexes": {}
}
}

View File

@@ -1,20 +0,0 @@
{
"version": "7",
"dialect": "sqlite",
"entries": [
{
"idx": 0,
"version": "6",
"when": 1719744624308,
"tag": "0000_condemned_meltdown",
"breakpoints": true
},
{
"idx": 1,
"version": "6",
"when": 1719750370348,
"tag": "0001_violet_katie_power",
"breakpoints": true
}
]
}

View File

@@ -1,9 +0,0 @@
import { sql } from 'drizzle-orm'
import { integer, sqliteTable, text } from 'drizzle-orm/sqlite-core'
export const posts = sqliteTable('posts', {
slug: text('slug').primaryKey(),
likes: integer('likes').default(0),
views: integer('views').default(0),
createdAt: text('created_at').default(sql`(CURRENT_DATE)`),
})

View File

@@ -1,10 +0,0 @@
import { drizzle } from 'drizzle-orm/d1'
import * as schema from '../database/schema'
export { and, asc, desc, eq, or, sql, sum } from 'drizzle-orm'
export const tables = schema
export function useDB() {
return drizzle(hubDatabase(), { schema })
}