From 6ffab7283c4e0d62920b60afd19b2163f83cee5a Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Sat, 16 May 2026 23:50:22 +0300 Subject: [PATCH] github import: preserve original issue timestamps When importing issues from GitHub, parse the issue's created_at field and store it instead of stamping the import time. Adds add_imported_issue_returning_id which takes an explicit timestamp, with the existing add_issue_returning_id forwarding to it using time.now() so other callers are unaffected. --- github.v | 13 ++++++++++++- issue.v | 7 ++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/github.v b/github.v index 6274abb..2174daa 100644 --- a/github.v +++ b/github.v @@ -47,11 +47,20 @@ struct GitHubIssue { title string body string state string + created_at string user GitHubIssueAuthor pull_request GitHubPullRequestRef labels []GitHubLabel } +fn parse_github_timestamp(s string) int { + if s == '' { + return int(time.now().unix()) + } + t := time.parse_iso8601(s) or { return int(time.now().unix()) } + return int(t.unix()) +} + fn parse_github_owner_repo(clone_url string) ?(string, string) { mut s := clone_url.trim_space() for prefix in ['https://', 'http://', 'git@'] { @@ -236,7 +245,9 @@ fn (mut app App) import_github_issues(repo_id int, clone_url string, owner_user_ owner_user_id } } - issue_id := app.add_issue_returning_id(repo_id, author_id, gi.title, gi.body) or { + created_at := parse_github_timestamp(gi.created_at) + issue_id := app.add_imported_issue_returning_id(repo_id, author_id, gi.title, gi.body, + created_at) or { eprintln('[github-import] ERROR inserting issue #${gi.number}: ${err}') continue } diff --git a/issue.v b/issue.v index 1fa229a..f4db8d8 100644 --- a/issue.v +++ b/issue.v @@ -49,12 +49,17 @@ fn (mut app App) add_issue(repo_id int, author_id int, title string, text string } fn (mut app App) add_issue_returning_id(repo_id int, author_id int, title string, text string) !int { + return app.add_imported_issue_returning_id(repo_id, author_id, title, text, + int(time.now().unix()))! +} + +fn (mut app App) add_imported_issue_returning_id(repo_id int, author_id int, title string, text string, created_at int) !int { issue := Issue{ title: title text: text repo_id: repo_id author_id: author_id - created_at: int(time.now().unix()) + created_at: created_at } sql app.db { -- 2.39.5