summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorJakobDev <jakobdev@gmx.de>2023-04-26 16:46:26 +0200
committerGitHub <noreply@github.com>2023-04-26 10:46:26 -0400
commitc41bc4f1279c9e1e6e11d7b5fcfe7ef089fc7577 (patch)
treef8afe8883c6d46b4e2a1591fcdce3b4f32c95e2c /models
parent61d08f446a5677933465c39d19a28fb2ea056e13 (diff)
downloadgitea-c41bc4f1279c9e1e6e11d7b5fcfe7ef089fc7577.tar.gz
gitea-c41bc4f1279c9e1e6e11d7b5fcfe7ef089fc7577.zip
Display when a repo was archived (#22664)
This adds the date a repo is archived to Gitea and shows it in the UI and API. A feature, that GitHub has been [introduced recently](https://github.blog/changelog/2022-11-23-repository-archive-date-now-shown-in-ui/). I currently don't know how to correctly deal with the Date in the template, as different languages have different ways of writing a date. ![grafik](https://user-images.githubusercontent.com/15185051/234315187-7db5763e-d96e-4080-b894-9be178bfb6e1.png) --------- Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'models')
-rw-r--r--models/migrations/migrations.go2
-rw-r--r--models/migrations/v1_20/v255.go23
-rw-r--r--models/repo/archiver.go9
-rw-r--r--models/repo/repo.go5
4 files changed, 36 insertions, 3 deletions
diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go
index 9de5931d71..1f1f43796c 100644
--- a/models/migrations/migrations.go
+++ b/models/migrations/migrations.go
@@ -487,6 +487,8 @@ var migrations = []Migration{
NewMigration("Fix ExternalTracker and ExternalWiki accessMode in owner and admin team", v1_20.FixExternalTrackerAndExternalWikiAccessModeInOwnerAndAdminTeam),
// v254 -> v255
NewMigration("Add ActionTaskOutput table", v1_20.AddActionTaskOutputTable),
+ // v255 -> v256
+ NewMigration("Add ArchivedUnix Column", v1_20.AddArchivedUnixToRepository),
}
// GetCurrentDBVersion returns the current db version
diff --git a/models/migrations/v1_20/v255.go b/models/migrations/v1_20/v255.go
new file mode 100644
index 0000000000..14b70f8f96
--- /dev/null
+++ b/models/migrations/v1_20/v255.go
@@ -0,0 +1,23 @@
+// Copyright 2023 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package v1_20 //nolint
+
+import (
+ "code.gitea.io/gitea/modules/timeutil"
+
+ "xorm.io/xorm"
+)
+
+func AddArchivedUnixToRepository(x *xorm.Engine) error {
+ type Repository struct {
+ ArchivedUnix timeutil.TimeStamp `xorm:"DEFAULT 0"`
+ }
+
+ if err := x.Sync(new(Repository)); err != nil {
+ return err
+ }
+
+ _, err := x.Exec("UPDATE repository SET archived_unix = updated_unix WHERE is_archived = ? AND archived_unix = 0", true)
+ return err
+}
diff --git a/models/repo/archiver.go b/models/repo/archiver.go
index 11ecaff34c..70f53cfe15 100644
--- a/models/repo/archiver.go
+++ b/models/repo/archiver.go
@@ -146,6 +146,13 @@ func FindRepoArchives(opts FindRepoArchiversOption) ([]*RepoArchiver, error) {
// SetArchiveRepoState sets if a repo is archived
func SetArchiveRepoState(repo *Repository, isArchived bool) (err error) {
repo.IsArchived = isArchived
- _, err = db.GetEngine(db.DefaultContext).Where("id = ?", repo.ID).Cols("is_archived").NoAutoTime().Update(repo)
+
+ if isArchived {
+ repo.ArchivedUnix = timeutil.TimeStampNow()
+ } else {
+ repo.ArchivedUnix = timeutil.TimeStamp(0)
+ }
+
+ _, err = db.GetEngine(db.DefaultContext).ID(repo.ID).Cols("is_archived", "archived_unix").NoAutoTime().Update(repo)
return err
}
diff --git a/models/repo/repo.go b/models/repo/repo.go
index 266cbc288c..f9de6d493d 100644
--- a/models/repo/repo.go
+++ b/models/repo/repo.go
@@ -174,8 +174,9 @@ type Repository struct {
// Avatar: ID(10-20)-md5(32) - must fit into 64 symbols
Avatar string `xorm:"VARCHAR(64)"`
- CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
- UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"`
+ CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
+ UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"`
+ ArchivedUnix timeutil.TimeStamp `xorm:"DEFAULT 0"`
}
func init() {