From d7a8d09da013f14bf795fa8efc3a0eac7f259d02 Mon Sep 17 00:00:00 2001
From: jeremiepozzigithub
 <125282390+jeremiepozzigithub@users.noreply.github.com>
Date: Thu, 20 Jul 2023 10:35:47 +0200
Subject: [PATCH] Add file status for API "Get a single commit from a
 repository" (#16205) (#25831)

#16205 To obtain a closer behavior to the api from github, the status
(added, modified, removed) of a file should be available in addition to
the filename.
See github doc :

https://docs.github.com/fr/rest/commits/commits?apiVersion=2022-11-28#get-a-commit
---
 modules/structs/repo_commit.go | 1 +
 services/convert/git_commit.go | 3 ++-
 templates/swagger/v1_json.tmpl | 4 ++++
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/modules/structs/repo_commit.go b/modules/structs/repo_commit.go
index b3e98df1953..fec7d97608d 100644
--- a/modules/structs/repo_commit.go
+++ b/modules/structs/repo_commit.go
@@ -69,4 +69,5 @@ type CommitDateOptions struct {
 // CommitAffectedFiles store information about files affected by the commit
 type CommitAffectedFiles struct {
 	Filename string `json:"filename"`
+	Status   string `json:"status"`
 }
diff --git a/services/convert/git_commit.go b/services/convert/git_commit.go
index e726011e02d..ac15719c1cf 100644
--- a/services/convert/git_commit.go
+++ b/services/convert/git_commit.go
@@ -196,10 +196,11 @@ func ToCommit(ctx context.Context, repo *repo_model.Repository, gitRepo *git.Rep
 		}
 
 		affectedFileList := make([]*api.CommitAffectedFiles, 0, len(fileStatus.Added)+len(fileStatus.Removed)+len(fileStatus.Modified))
-		for _, files := range [][]string{fileStatus.Added, fileStatus.Removed, fileStatus.Modified} {
+		for filestatus, files := range map[string][]string{"added": fileStatus.Added, "removed": fileStatus.Removed, "modified": fileStatus.Modified} {
 			for _, filename := range files {
 				affectedFileList = append(affectedFileList, &api.CommitAffectedFiles{
 					Filename: filename,
+					Status:   filestatus,
 				})
 			}
 		}
diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl
index b7620b9e763..42eda985289 100644
--- a/templates/swagger/v1_json.tmpl
+++ b/templates/swagger/v1_json.tmpl
@@ -16399,6 +16399,10 @@
         "filename": {
           "type": "string",
           "x-go-name": "Filename"
+        },
+        "status": {
+          "type": "string",
+          "x-go-name": "Status"
         }
       },
       "x-go-package": "code.gitea.io/gitea/modules/structs"