internal/mode/advanced/indexer/commit.go (39 lines of code) (raw):
package indexer
import (
"encoding/json"
"fmt"
"strconv"
"gitlab.com/gitlab-org/gitlab-elasticsearch-indexer/internal/mode/advanced/git"
)
type Commit struct {
Type string `json:"type"`
ID string `json:"-"`
Author *Person `json:"author"`
Committer *Person `json:"committer"`
RepoID string `json:"rid"`
Message string `json:"message"`
SHA string `json:"sha"`
}
func (c *Commit) ToMap() (newMap map[string]interface{}, err error) {
data, err := json.Marshal(c) // Convert to a json string
if err != nil {
return
}
err = json.Unmarshal(data, &newMap) // Convert to a map
return
}
func GenerateCommitID(parentID int64, commitSHA string) string {
return fmt.Sprintf("%v_%s", parentID, commitSHA)
}
func (i *Indexer) BuildCommit(c *git.Commit) *Commit {
sha := c.Hash
return &Commit{
Type: "commit",
Author: BuildPerson(c.Author, i.Encoder),
Committer: BuildPerson(c.Committer, i.Encoder),
ID: GenerateCommitID(i.Submitter.ParentID(), sha),
RepoID: strconv.FormatInt(i.Submitter.ParentID(), 10),
Message: i.Encoder.tryEncodeString(c.Message),
SHA: sha,
}
}