mirror of
https://git.sr.ht/~roxwize/mipilin
synced 2025-05-10 23:33:07 +00:00
invite cooooddeesss
Signed-off-by: roxwize <rae@roxwize.xyz>
This commit is contained in:
parent
7b563f5c31
commit
5abe0b5fad
22 changed files with 2326 additions and 16 deletions
21
main.ts
21
main.ts
|
@ -5,21 +5,22 @@ import "dotenv/config";
|
|||
import dayjs from "dayjs";
|
||||
import relativeTime from "dayjs/plugin/relativeTime.js";
|
||||
|
||||
import express from "express";
|
||||
import express, { Express } from "express";
|
||||
import bodyParser from "body-parser";
|
||||
import session from "express-session";
|
||||
import connectPgSimple from "connect-pg-simple";
|
||||
import flash from "connect-flash";
|
||||
|
||||
import { drizzle } from "drizzle-orm/node-postgres";
|
||||
import { drizzle, NodePgDatabase } from "drizzle-orm/node-postgres";
|
||||
import { updates, users } from "./db/schema.js";
|
||||
import { desc, eq } from "drizzle-orm";
|
||||
import { count, desc, eq } from "drizzle-orm";
|
||||
|
||||
// routes
|
||||
import adminRoutes from "./routes/admin.js";
|
||||
import loginRoutes from "./routes/login.js";
|
||||
import userRoutes from "./routes/users.js";
|
||||
import updateRoutes from "./routes/updates.js";
|
||||
import { getMoods, render, setNonce } from "./routes/util.js";
|
||||
import { createInviteCode, getMoods, render, setNonce } from "./routes/util.js";
|
||||
|
||||
const db = drizzle(process.env.DATABASE_URL!);
|
||||
|
||||
|
@ -58,6 +59,8 @@ object-src 'none'; base-uri 'none';"
|
|||
return next();
|
||||
});
|
||||
|
||||
await init(app, db);
|
||||
|
||||
app.get("/", async (req, res) => {
|
||||
const upd = db
|
||||
.selectDistinctOn([updates.user], {
|
||||
|
@ -100,6 +103,7 @@ object-src 'none'; base-uri 'none';"
|
|||
});
|
||||
});
|
||||
|
||||
adminRoutes(app, db);
|
||||
await userRoutes(app, db);
|
||||
await updateRoutes(app, db);
|
||||
loginRoutes(app, db);
|
||||
|
@ -108,3 +112,12 @@ object-src 'none'; base-uri 'none';"
|
|||
console.log("Listening on http://127.0.0.1:1337/");
|
||||
});
|
||||
})();
|
||||
|
||||
async function init(app: Express, db: NodePgDatabase) {
|
||||
const totalUsers = await db.select({ value: count() }).from(users);
|
||||
if (totalUsers[0].value === 0) {
|
||||
console.log("There are no users registered. Creating a temporary invite code right now.");
|
||||
console.log(" " + await createInviteCode(db, 0, new Date(Date.now() + (1 * 1000 * 60)), true));
|
||||
console.log("This code expires in 1 minute and will confer admin powers to whoever signs up with it.");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue