feat(backend/database/post) add first_update

This commit is contained in:
lumither committed 2024-05-04 13:16:03 +08:00
1 parent a9ba365bac
commit 7e3687c4c9
4 files changed
+39 -23

No files matched your search

+15 -11
View File
@@ -49,11 +49,12 @@ pub async fn refresh(
r##"
CREATE TABLE IF NOT EXISTS Post
(
post_id UUID PRIMARY KEY,
title VARCHAR(255) NOT NULL,
summary TEXT NOT NULL,
content TEXT NOT NULL,
last_update TIMESTAMP
post_id UUID PRIMARY KEY,
title VARCHAR(255) NOT NULL,
summary TEXT NOT NULL,
content TEXT NOT NULL,
last_update TIMESTAMP,
first_update TIMESTAMP NOT NULL
);
"##,
)
@@ -81,13 +82,15 @@ CREATE TABLE IF NOT EXISTS Tag
// table Post
match query(
r##"
INSERT INTO Post (post_id, title, summary, content, last_update)
VALUES ($1, $2, $3, $4, $5)
INSERT INTO Post (post_id, title, summary, content, last_update, first_update)
VALUES ($1, $2, $3, $4, $5, $6)
ON CONFLICT (post_id)
DO UPDATE SET title = excluded.title,
summary = excluded.summary,
content = excluded.content,
last_update = excluded.last_update
DO UPDATE SET title = excluded.title,
summary = excluded.summary,
content = excluded.content,
last_update = excluded.last_update,
first_update = excluded.first_update
"##,
)
.bind(post.post_id)
@@ -95,6 +98,7 @@ ON CONFLICT (post_id)
.bind(post.summary)
.bind(&post.content)
.bind(post.last_update)
.bind(post.first_update)
.execute(&db_connection)
.await
{
+1
View File
@@ -12,6 +12,7 @@ pub struct Post {
pub summary: String,
pub content: String,
pub last_update: NaiveDateTime,
pub first_update: NaiveDateTime,
}
+10 -1
View File
@@ -3,7 +3,7 @@ use std::error::Error;
use std::process::Command;
use std::str;
use chrono::{NaiveDateTime, Utc};
use chrono::{NaiveDate, NaiveDateTime, Utc};
use uuid::Uuid;
use crate::markdown::meta::parse_meta;
@@ -44,12 +44,21 @@ impl Post {
Utc::now().naive_utc()
};
let first_update: NaiveDateTime = match meta.get("date") {
None => Utc::now().naive_utc(),
Some(date) => NaiveDateTime::from(
NaiveDate::parse_from_str(date, "%Y-%m-%d%z")
.expect("Failed to parse first_update time"),
),
};
Ok(Post {
post_id: Uuid::new_v4(),
title,
summary,
content: md_content,
last_update,
first_update,
})
}
}