post fields improvements

This commit is contained in:
Michael Freno
2025-12-29 17:47:35 -05:00
parent ec4a895016
commit 2852c0b450
3 changed files with 49 additions and 8 deletions

View File

@@ -20,12 +20,13 @@ export const model: { [key: string]: string } = {
subtitle TEXT,
body TEXT NOT NULL,
banner_photo TEXT,
date TEXT NOT NULL DEFAULT (datetime('now')),
date TEXT,
published INTEGER NOT NULL,
category TEXT,
author_id TEXT NOT NULL,
reads INTEGER NOT NULL DEFAULT 0,
attachments TEXT
attachments TEXT,
last_edited_date TEXT
);
CREATE INDEX IF NOT EXISTS idx_posts_category ON Post (category);
`,

View File

@@ -22,11 +22,12 @@ export interface Post {
subtitle?: string;
body: string;
banner_photo?: string;
date: string;
date?: string | null;
published: boolean;
author_id: string;
reads: number;
attachments?: string;
last_edited_date?: string | null;
}
export interface PostLike {
@@ -72,13 +73,14 @@ export interface PostWithCommentsAndLikes {
subtitle: string;
body: string;
banner_photo: string;
date: string;
date?: string | null;
published: boolean;
author_id: string;
reads: number;
attachments: string;
total_likes: number;
total_comments: number;
last_edited_date?: string | null;
}
export interface PostWithTags {
id: number;
@@ -87,10 +89,11 @@ export interface PostWithTags {
subtitle: string;
body: string;
banner_photo: string;
date: string;
date?: string | null;
published: boolean;
author_id: string;
reads: number;
attachments: string;
tags: Tag[];
last_edited_date?: string | null;
}

View File

@@ -382,9 +382,12 @@ export const databaseRouter = createTRPCRouter({
? env.VITE_AWS_BUCKET_STRING + input.banner_photo
: null;
const now = new Date().toISOString();
const publishDate = input.published ? now : null;
const query = `
INSERT INTO Post (title, category, subtitle, body, banner_photo, published, author_id)
VALUES (?, ?, ?, ?, ?, ?, ?)
INSERT INTO Post (title, category, subtitle, body, banner_photo, date, published, author_id, last_edited_date)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
`;
const params = [
input.title,
@@ -392,8 +395,10 @@ export const databaseRouter = createTRPCRouter({
input.subtitle,
input.body,
fullURL,
publishDate,
input.published,
input.author_id
input.author_id,
now
];
const results = await conn.execute({ sql: query, args: params });
@@ -436,6 +441,26 @@ export const databaseRouter = createTRPCRouter({
try {
const conn = ConnectionFactory();
// Check if post is being published for the first time
let shouldSetPublishDate = false;
if (input.published !== undefined && input.published !== null) {
const currentPostQuery = await conn.execute({
sql: "SELECT published, date FROM Post WHERE id = ?",
args: [input.id]
});
const currentPost = currentPostQuery.rows[0] as any;
// Set publish date if transitioning from unpublished to published and date is null
if (
currentPost &&
!currentPost.published &&
input.published &&
!currentPost.date
) {
shouldSetPublishDate = true;
}
}
let query = "UPDATE Post SET ";
let params: any[] = [];
let first = true;
@@ -474,6 +499,18 @@ export const databaseRouter = createTRPCRouter({
first = false;
}
// Set date if publishing for the first time
if (shouldSetPublishDate) {
query += first ? "date = ?" : ", date = ?";
params.push(new Date().toISOString());
first = false;
}
// Always update last_edited_date
query += first ? "last_edited_date = ?" : ", last_edited_date = ?";
params.push(new Date().toISOString());
first = false;
query += first ? "author_id = ?" : ", author_id = ?";
params.push(input.author_id);