Files
markone/packages/server/src/server.ts

60 lines
1.4 KiB
TypeScript
Raw Normal View History

2025-05-06 11:00:35 +01:00
import { authenticated, login, logout, signUp } from "./auth/auth.ts"
import { startBackgroundSessionCleanup } from "./auth/session.ts"
2025-05-07 15:47:08 +01:00
import { insertDemoBookmarks } from "./bookmark/bookmark.ts"
2025-05-21 13:18:16 +01:00
import {
addBookmark,
listUserBookmarks,
deleteUserBookmark,
fetchBookmark,
listUserTags,
createUserTag,
listBookmarkTags,
} from "./bookmark/handlers.ts"
2025-05-06 11:00:35 +01:00
import { migrateDatabase } from "./database.ts"
2025-05-07 15:47:08 +01:00
import { httpHandler, preflightHandler } from "./http-handler.ts"
2025-05-06 11:00:35 +01:00
import { createDemoUser } from "./user/user.ts"
2025-05-07 15:47:08 +01:00
async function main() {
2025-05-06 11:00:35 +01:00
migrateDatabase()
2025-05-07 15:47:08 +01:00
const user = await createDemoUser()
insertDemoBookmarks(user)
2025-05-06 11:00:35 +01:00
startBackgroundSessionCleanup()
Bun.serve({
routes: {
"/api/login": {
POST: httpHandler(login),
},
"/api/sign-up": {
POST: httpHandler(signUp),
},
"/api/logout": {
POST: authenticated(logout),
},
"/api/bookmarks": {
GET: authenticated(listUserBookmarks),
2025-05-07 23:09:14 +01:00
POST: authenticated(addBookmark),
2025-05-06 11:00:35 +01:00
},
"/api/bookmarks/:id": {
2025-05-08 15:51:17 +01:00
GET: authenticated(fetchBookmark),
2025-05-07 15:47:08 +01:00
DELETE: authenticated(deleteUserBookmark),
OPTIONS: preflightHandler({
allowedMethods: ["GET", "POST", "DELETE", "OPTIONS"],
allowedHeaders: ["Accept"],
2025-05-07 15:47:08 +01:00
}),
},
2025-05-21 13:18:16 +01:00
"/api/bookmarks/:id/tags": {
GET: authenticated(listBookmarkTags),
},
"/api/tags": {
GET: authenticated(listUserTags),
POST: authenticated(createUserTag),
},
2025-05-06 11:00:35 +01:00
},
2025-05-07 15:47:08 +01:00
port: 8080,
2025-05-06 11:00:35 +01:00
})
}
main()