Compare commits

..

No commits in common. "f205c0db0bdac3aca7af9bdd23e5c3a8a48d0635" and "38c26c07cd757feb99c494c739b76a42b8975c62" have entirely different histories.

8 changed files with 24 additions and 24 deletions

View File

@ -1,11 +1,11 @@
import { readFileSync } from "node:fs"; import { readFileSync } from "node:fs";
import markdownit from "markdown-it"; import markdownit from "markdown-it";
import { Article, buildCanonicalUrl, getArticleById } from "./article.js"; import { Article, buildCanonicalUrl, getById as getArticleById } from "./article.js";
import { User, getByActor } from "./user.js"; import { User, getByActor } from "./user.js";
import { fillRoute, reverseRoute } from "./router.js"; import { fillRoute, reverseRoute } from "./router.js";
import { streamToString, hashDigest } from "./util.js"; import { streamToString, hashDigest } from "./util.js";
import { signedFetch, SignedInit, getActor } from "./net.js"; import { signedFetch, SignedInit, getActor } from "./net.js";
import { getUserById, keyIdFromNickname } from "./user.js"; import { getById as getUserById, keyIdFromNickname } from "./user.js";
import parser from "activitypub-http-signatures"; import parser from "activitypub-http-signatures";
import type { Request, Response } from "express"; import type { Request, Response } from "express";
import { addFollower } from "./follower.js"; import { addFollower } from "./follower.js";

View File

@ -17,28 +17,28 @@ export const zArticle = z.object({
export type Article = z.infer<typeof zArticle>; export type Article = z.infer<typeof zArticle>;
export const getArticleBySlug = async (slug: string): Promise<Article | null> => { export const getBySlug = async (slug: string): Promise<Article | null> => {
return db<Article>("articles") return db<Article>("articles")
.where("slug", slug) .where("slug", slug)
.first() .first()
.then((rec) => !!rec ? fixDates<Article>(rec) : null) .then((rec) => !!rec ? fixDates<Article>(rec) : null)
}; };
export const getArticleById = async (articleId: number): Promise<Article | null> => { export const getById = async (articleId: number): Promise<Article | null> => {
return db<Article>("articles") return db<Article>("articles")
.where("id", articleId) .where("id", articleId)
.first() .first()
.then((rec) => !!rec ? fixDates<Article>(rec) : null) .then((rec) => !!rec ? fixDates<Article>(rec) : null)
}; };
export const getArticlesByUserId = async (userId: number): Promise<Article[]> => export const getByUserId = async (userId: number): Promise<Article[]> =>
db<Article>("articles") db<Article>("articles")
.where("users_id", userId) .where("users_id", userId)
.orderBy("created_at", "desc") .orderBy("created_at", "desc")
.then((articles) => articles.map((a) => fixDates<Article>(a))) .then((articles) => articles.map((a) => fixDates<Article>(a)))
; ;
export const insertArticle = async (userId: number, slug: string, title: string): Promise<Article> => { export const insert = async (userId: number, slug: string, title: string): Promise<Article> => {
const data: Record<string, any> = { const data: Record<string, any> = {
users_id: userId, users_id: userId,
slug, slug,
@ -56,7 +56,7 @@ export const insertArticle = async (userId: number, slug: string, title: string)
} as Article)) } as Article))
}; };
export const getAllArticles = async (count: number, lastId = Number.MAX_SAFE_INTEGER) => export const getAll = async (count: number, lastId = Number.MAX_SAFE_INTEGER) =>
db<Article>("articles") db<Article>("articles")
.where("id", "<", lastId) .where("id", "<", lastId)
.orderBy("created_at", "desc") .orderBy("created_at", "desc")

View File

@ -1,8 +1,8 @@
import fs from "node:fs"; import fs from "node:fs";
import markdownit from 'markdown-it' import markdownit from 'markdown-it'
import { slugRegex } from "./article.js"; import { slugRegex } from "./article.js";
import { newUser, getUserByNickname, getFollowerInboxes, keyIdFromNickname } from "./user.js"; import { newUser, get as getUserByNickname, getFollowerInboxes, keyIdFromNickname } from "./user.js";
import { insertArticle } from "./article.js"; import { insert as insertArticle } from "./article.js";
import { add as addToOutbox } from "./outbox.js"; import { add as addToOutbox } from "./outbox.js";
import { createArticleActivity, sendAll } from "./activity.js"; import { createArticleActivity, sendAll } from "./activity.js";
import { fillRoute } from "./router.js"; import { fillRoute } from "./router.js";

View File

@ -2,7 +2,7 @@ import { TYPE } from "./activity.js";
import { CollectionEntry, orderedCollection } from "./collection.js"; import { CollectionEntry, orderedCollection } from "./collection.js";
import db from "./db.js"; import db from "./db.js";
import { fillRoute } from "./router.js"; import { fillRoute } from "./router.js";
import { getUserByNickname } from "./user.js"; import { get as getUserByNickname } from "./user.js";
import { Request, Response } from "express"; import { Request, Response } from "express";
export interface Follower { export interface Follower {

View File

@ -1,9 +1,9 @@
import express, { Request } from "express"; import express, { Request } from "express";
import bodyParser from "body-parser"; import bodyParser from "body-parser";
import { toCollection as getOutbox } from "./outbox.js"; import { toCollection as getOutbox } from "./outbox.js";
import { getUserById, getUserNicknameById, getUserByNickname, User } from "./user.js"; import { getById as getUserById, getNickname, get as getUserByNickname, getId as getUserId, User } from "./user.js";
import { Routes } from "./router.js"; import { Routes } from "./router.js";
import { getArticleBySlug, getArticleById, getArticlesByUserId, getAllArticles } from "./article.js"; import { getBySlug as getArticleBySlug, getById, getByUserId, getAll as getAllArticles } from "./article.js";
import { userToPerson, TYPE as ACTIVITYPUB_TYPE, handleInboxPost, createArticleObject, CONTEXT, createArticleActivity } from "./activity.js"; import { userToPerson, TYPE as ACTIVITYPUB_TYPE, handleInboxPost, createArticleObject, CONTEXT, createArticleActivity } from "./activity.js";
import { handleFollowerGet } from "./follower.js"; import { handleFollowerGet } from "./follower.js";
import { handleWebfingerGet } from "./net.js"; import { handleWebfingerGet } from "./net.js";
@ -48,7 +48,7 @@ app.post(Routes.inbox, handleInboxPost);
app.get(Routes.followers, handleFollowerGet); app.get(Routes.followers, handleFollowerGet);
app.get(Routes.object, async (req, res) => { app.get(Routes.object, async (req, res) => {
const article = await getArticleById(parseInt(req.params.id)); const article = await getById(parseInt(req.params.id));
if (article) { if (article) {
console.log("Request headers for object route:", req.headers); console.log("Request headers for object route:", req.headers);
@ -58,7 +58,7 @@ app.get(Routes.object, async (req, res) => {
"application/ld+json", "application/ld+json",
"json" "json"
])) { ])) {
const nickname = await getUserNicknameById(article.users_id) as string; const nickname = await getNickname(article.users_id) as string;
const obj = createArticleObject(article, nickname); const obj = createArticleObject(article, nickname);
obj["@context"] = CONTEXT; obj["@context"] = CONTEXT;
@ -91,7 +91,7 @@ app.get(Routes.activity, async (req, res) => {
res.status(501).end(); res.status(501).end();
} }
else { else {
const article = await getArticleById(id); const article = await getById(id);
if (article) { if (article) {
console.log("Request headers for activity route:", req.headers); console.log("Request headers for activity route:", req.headers);
@ -164,7 +164,7 @@ app.get(Routes.actor, async (req, res) => {
} }
else if (req.accepts("html")) { else if (req.accepts("html")) {
console.log(`returning actor: ${nickname} as html`); console.log(`returning actor: ${nickname} as html`);
const posts = (await getArticlesByUserId(actor.id)).map((a) => `<li><a href="/${a.slug}.html">${escapeHtml(a.title)}</a></li>`).join(""); const posts = (await getByUserId(actor.id)).map((a) => `<li><a href="/${a.slug}.html">${escapeHtml(a.title)}</a></li>`).join("");
const body = `<!DOCTYPE html> const body = `<!DOCTYPE html>
<html> <html>

View File

@ -6,7 +6,7 @@ import { actorSchema } from "./activitypub_types.js";
import type { Actor } from "./activitypub_types.js"; import type { Actor } from "./activitypub_types.js";
import type { Request, Response } from "express"; import type { Request, Response } from "express";
import { fillRoute } from "./router.js"; import { fillRoute } from "./router.js";
import { getUserByNickname } from "./user.js"; import { get as getUserByNickname } from "./user.js";
export const flattenHeaders = (headers: Record<string, string>) => export const flattenHeaders = (headers: Record<string, string>) =>
Object.entries(headers).map(([key, value]) => `${key}: ${value}`); Object.entries(headers).map(([key, value]) => `${key}: ${value}`);

View File

@ -1,8 +1,8 @@
import db from "./db.js"; import db from "./db.js";
import { z } from "zod"; import { z } from "zod";
import { getUserByNickname } from "./user.js"; import { get as getUserByNickname } from "./user.js";
import { fillRoute } from "./router.js"; import { fillRoute } from "./router.js";
import { getArticleById, Article } from "./article.js"; import { getByUserId as getArticlesByUserId, getById as getArticleById, Article } from "./article.js";
import { createArticleActivity, deleteArticleActivity } from "./activity.js"; import { createArticleActivity, deleteArticleActivity } from "./activity.js";
import { orderedCollection } from "./collection.js"; import { orderedCollection } from "./collection.js";

View File

@ -27,13 +27,13 @@ export const zUser = z.object({
export type User = z.infer<typeof zUser>; export type User = z.infer<typeof zUser>;
export const getUserByNickname = async (nickname: string) => export const get = async (nickname: string) =>
db<User>("users") db<User>("users")
.where("nickname", nickname) .where("nickname", nickname)
.first() .first()
; ;
export const getUserById = async (id: number) => export const getById = async (id: number) =>
db<User>("users") db<User>("users")
.where("id", id) .where("id", id)
.first() .first()
@ -45,12 +45,12 @@ export const getByActor = async (actor: string) => {
const matchArray = actor.match(EXTRACT_NICKNAME); const matchArray = actor.match(EXTRACT_NICKNAME);
if (matchArray) { if (matchArray) {
const nickname = matchArray[1]; const nickname = matchArray[1];
return getUserByNickname(nickname); return get(nickname);
} }
else return null; else return null;
}; };
export const getUserNicknameById = async (userId: number): Promise<string | null> => export const getNickname = async (userId: number): Promise<string | null> =>
db("users") db("users")
.select("nickname") .select("nickname")
.where("id", userId) .where("id", userId)
@ -58,7 +58,7 @@ export const getUserNicknameById = async (userId: number): Promise<string | null
.then((rec) => !!rec ? rec.nickname : null) .then((rec) => !!rec ? rec.nickname : null)
; ;
export const getUserIdByNickname = async (nickname: string): Promise<number | null> => export const getId = async (nickname: string): Promise<number | null> =>
db("users") db("users")
.select("id") .select("id")
.where("nickname", nickname) .where("nickname", nickname)