From 01c699e7a6962c50b52ed48df7f2819a9c9b418e Mon Sep 17 00:00:00 2001 From: qing <1776177662@qq.com> Date: Tue, 11 Aug 2026 10:34:09 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20Notes=20=E6=96=B0=E5=A2=9E=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E6=97=B6=E9=97=B4/=E6=9B=B4=E6=96=B0=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E5=88=97=EF=BC=8Cdnfs2=20=E6=B7=BB=E5=8A=A0/=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=97=B6=E5=A1=AB=E5=85=A5=E6=9C=AC=E5=9C=B0=E6=97=B6?= =?UTF-8?q?=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - patch_002 存量补丁:created_at / updated_at DATETIME 列 - dnfs2 add_note 同时填入两个时间戳,update_note 只更新 updated_at - 时间格式 local_now():"YYYY-MM-DD HH:MM:S"(本地时间) --- db2/scripts/patch_002_notes_timestamps.sql | 10 ++++++++ dnfs2/src/dnfs2.cpp | 27 ++++++++++++++++------ 2 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 db2/scripts/patch_002_notes_timestamps.sql diff --git a/db2/scripts/patch_002_notes_timestamps.sql b/db2/scripts/patch_002_notes_timestamps.sql new file mode 100644 index 0000000..46d9d2f --- /dev/null +++ b/db2/scripts/patch_002_notes_timestamps.sql @@ -0,0 +1,10 @@ +-- 补丁 002:Notes 表新增创建时间 / 更新时间列 +-- 数据库类型: SQLite +-- 依赖: create_sqlite3.sql(Notes 表已存在) +-- 幂等性: ADD COLUMN 为一次性迁移,重复执行会报 "duplicate column name", +-- 请按迁移编号顺序执行一次。 + +-- 创建时间(新增节点时由 dnfs2 填入本地时间) +ALTER TABLE Notes ADD COLUMN created_at DATETIME; +-- 更新时间(新增/更新节点时由 dnfs2 填入本地时间) +ALTER TABLE Notes ADD COLUMN updated_at DATETIME; diff --git a/dnfs2/src/dnfs2.cpp b/dnfs2/src/dnfs2.cpp index c16daac..c279c84 100644 --- a/dnfs2/src/dnfs2.cpp +++ b/dnfs2/src/dnfs2.cpp @@ -89,6 +89,16 @@ static std::string utc_now() { return buf; } +static std::string local_now() { + auto now = std::chrono::system_clock::now(); + std::time_t t = std::chrono::system_clock::to_time_t(now); + struct tm tmbuf; + localtime_r(&t, &tmbuf); + char buf[32]; + std::strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", &tmbuf); + return buf; +} + static int safe_stoi(const std::string& s, const char* field_name) { try { size_t pos = 0; @@ -1034,10 +1044,12 @@ private: // 执行插入 json::object values; - values["pid"] = pid; - values["owner"] = info->user; - values["title"] = title; - values["content"] = content; + values["pid"] = pid; + values["owner"] = info->user; + values["title"] = title; + values["content"] = content; + values["created_at"] = local_now(); + values["updated_at"] = local_now(); json::object payload; payload["action"] = "insert"; @@ -1241,9 +1253,10 @@ private: // 执行更新 json::object values; - values["pid"] = pid; - values["title"] = title; - values["content"] = content; + values["pid"] = pid; + values["title"] = title; + values["content"] = content; + values["updated_at"] = local_now(); json::object payload; payload["action"] = "update";