Compare commits
No commits in common. "f205c0db0bdac3aca7af9bdd23e5c3a8a48d0635" and "38c26c07cd757feb99c494c739b76a42b8975c62" have entirely different histories.
f205c0db0b
...
38c26c07cd
|
@ -1,11 +1,11 @@
|
|||
import { readFileSync } from "node:fs";
|
||||
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 { fillRoute, reverseRoute } from "./router.js";
|
||||
import { streamToString, hashDigest } from "./util.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 type { Request, Response } from "express";
|
||||
import { addFollower } from "./follower.js";
|
||||
|
|
|
@ -17,28 +17,28 @@ export const zArticle = z.object({
|
|||
|
||||
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")
|
||||
.where("slug", slug)
|
||||
.first()
|
||||
.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")
|
||||
.where("id", articleId)
|
||||
.first()
|
||||
.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")
|
||||
.where("users_id", userId)
|
||||
.orderBy("created_at", "desc")
|
||||
.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> = {
|
||||
users_id: userId,
|
||||
slug,
|
||||
|
@ -56,7 +56,7 @@ export const insertArticle = async (userId: number, slug: string, title: string)
|
|||
} 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")
|
||||
.where("id", "<", lastId)
|
||||
.orderBy("created_at", "desc")
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import fs from "node:fs";
|
||||
import markdownit from 'markdown-it'
|
||||
import { slugRegex } from "./article.js";
|
||||
import { newUser, getUserByNickname, getFollowerInboxes, keyIdFromNickname } from "./user.js";
|
||||
import { insertArticle } from "./article.js";
|
||||
import { newUser, get as getUserByNickname, getFollowerInboxes, keyIdFromNickname } from "./user.js";
|
||||
import { insert as insertArticle } from "./article.js";
|
||||
import { add as addToOutbox } from "./outbox.js";
|
||||
import { createArticleActivity, sendAll } from "./activity.js";
|
||||
import { fillRoute } from "./router.js";
|
||||
|
|
|
@ -2,7 +2,7 @@ import { TYPE } from "./activity.js";
|
|||
import { CollectionEntry, orderedCollection } from "./collection.js";
|
||||
import db from "./db.js";
|
||||
import { fillRoute } from "./router.js";
|
||||
import { getUserByNickname } from "./user.js";
|
||||
import { get as getUserByNickname } from "./user.js";
|
||||
import { Request, Response } from "express";
|
||||
|
||||
export interface Follower {
|
||||
|
|
12
src/index.ts
12
src/index.ts
|
@ -1,9 +1,9 @@
|
|||
import express, { Request } from "express";
|
||||
import bodyParser from "body-parser";
|
||||
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 { 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 { handleFollowerGet } from "./follower.js";
|
||||
import { handleWebfingerGet } from "./net.js";
|
||||
|
@ -48,7 +48,7 @@ app.post(Routes.inbox, handleInboxPost);
|
|||
app.get(Routes.followers, handleFollowerGet);
|
||||
|
||||
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) {
|
||||
console.log("Request headers for object route:", req.headers);
|
||||
|
@ -58,7 +58,7 @@ app.get(Routes.object, async (req, res) => {
|
|||
"application/ld+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);
|
||||
obj["@context"] = CONTEXT;
|
||||
|
@ -91,7 +91,7 @@ app.get(Routes.activity, async (req, res) => {
|
|||
res.status(501).end();
|
||||
}
|
||||
else {
|
||||
const article = await getArticleById(id);
|
||||
const article = await getById(id);
|
||||
|
||||
if (article) {
|
||||
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")) {
|
||||
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>
|
||||
<html>
|
||||
|
|
|
@ -6,7 +6,7 @@ import { actorSchema } from "./activitypub_types.js";
|
|||
import type { Actor } from "./activitypub_types.js";
|
||||
import type { Request, Response } from "express";
|
||||
import { fillRoute } from "./router.js";
|
||||
import { getUserByNickname } from "./user.js";
|
||||
import { get as getUserByNickname } from "./user.js";
|
||||
|
||||
export const flattenHeaders = (headers: Record<string, string>) =>
|
||||
Object.entries(headers).map(([key, value]) => `${key}: ${value}`);
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import db from "./db.js";
|
||||
import { z } from "zod";
|
||||
import { getUserByNickname } from "./user.js";
|
||||
import { get as getUserByNickname } from "./user.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 { orderedCollection } from "./collection.js";
|
||||
|
||||
|
|
10
src/user.ts
10
src/user.ts
|
@ -27,13 +27,13 @@ export const zUser = z.object({
|
|||
|
||||
export type User = z.infer<typeof zUser>;
|
||||
|
||||
export const getUserByNickname = async (nickname: string) =>
|
||||
export const get = async (nickname: string) =>
|
||||
db<User>("users")
|
||||
.where("nickname", nickname)
|
||||
.first()
|
||||
;
|
||||
|
||||
export const getUserById = async (id: number) =>
|
||||
export const getById = async (id: number) =>
|
||||
db<User>("users")
|
||||
.where("id", id)
|
||||
.first()
|
||||
|
@ -45,12 +45,12 @@ export const getByActor = async (actor: string) => {
|
|||
const matchArray = actor.match(EXTRACT_NICKNAME);
|
||||
if (matchArray) {
|
||||
const nickname = matchArray[1];
|
||||
return getUserByNickname(nickname);
|
||||
return get(nickname);
|
||||
}
|
||||
else return null;
|
||||
};
|
||||
|
||||
export const getUserNicknameById = async (userId: number): Promise<string | null> =>
|
||||
export const getNickname = async (userId: number): Promise<string | null> =>
|
||||
db("users")
|
||||
.select("nickname")
|
||||
.where("id", userId)
|
||||
|
@ -58,7 +58,7 @@ export const getUserNicknameById = async (userId: number): Promise<string | 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")
|
||||
.select("id")
|
||||
.where("nickname", nickname)
|
||||
|
|
Loading…
Reference in New Issue