1import { Hono } from "https://esm.sh/hono@3.11.7";
2import { createSubscriber, getSubscriberByEmail, unsubscribeByEmail, getAdminStats } from "../database/queries.ts";
3import type { SubscribeRequest } from "../../shared/types.ts";
4
15```
16โโโ backend/
17โ โโโ database/
18โ โ โโโ migrations.ts # Database schema setup
19โ โ โโโ queries.ts # Database query functions
20โ โโโ routes/
21โ โ โโโ jobs.ts # Job-related API endpoints
1import { Hono } from "https://esm.sh/hono@3.11.7";
2import { email } from "https://esm.town/v/std/email";
3import { createRelease, getAllReleases, getAllActiveSubscribers, logNotification } from "../database/queries.ts";
4import type { CreateReleaseRequest, NotificationData } from "../../shared/types.ts";
5
1import { sqlite } from "https://esm.town/v/stevekrouse/sqlite";
2
3// Database schema for music release notifications
4export async function runMigrations() {
5 console.log("Running database migrations...");
6
7 // Releases table
46 `);
47
48 console.log("Database migrations completed successfully");
49}
14```
15โโโ backend/
16โ โโโ database/
17โ โ โโโ migrations.ts # Database schema setup
18โ โ โโโ queries.ts # Database query functions
19โ โโโ routes/
20โ โ โโโ admin.ts # Admin dashboard routes
42 - `ARTIST_EMAIL`: Your email for notifications
43
442. The database will be automatically initialized on first run.
45
46## Usage
1import { Hono } from "https://esm.sh/hono@3.11.7";
2import { runMigrations, cleanupExpiredSessions } from "./database/migrations.ts";
3import auth from "./routes/auth.ts";
4import polls from "./routes/polls.ts";
13});
14
15// Initialize database on startup
16await runMigrations();
17
4 getUserVote,
5 getPollById
6} from "../database/queries.ts";
7import { requireAuth } from "./auth.ts";
8import { isPollActive } from "../../shared/utils.ts";
8 deletePoll,
9 getSessionUser
10} from "../database/queries.ts";
11import { requireAuth } from "./auth.ts";
12import { sanitizeInput, isPollActive } from "../../shared/utils.ts";
1import { Hono } from "https://esm.sh/hono@3.11.7";
2import { readFile, serveFile } from "https://esm.town/v/std/utils@85-main/index.ts";
3import { runMigrations } from "./database/migrations.ts";
4import { getAllJobs, getChatMessages } from "./database/queries.ts";
5import jobsRouter from "./routes/jobs.ts";
6import chatRouter from "./routes/chat.ts";
13});
14
15// Initialize database
16await runMigrations();
17
9 getSessionUser,
10 deleteSession
11} from "../database/queries.ts";
12import { isValidEmail, isValidUsername, isValidPassword, sanitizeInput } from "../../shared/utils.ts";
13import type { LoginRequest, RegisterRequest, ApiResponse } from "../../shared/types.ts";