* remove ReplaceLeft * remove GetRepositoryByOwnerAndName chainload to models.GetRepositoryByOwnerAndName * remove CheckUnitUser chainload to models.CheckUnitUser * remove MakeAssigneeList * remove DownloadDiff & DownloadPatch -> DownloadDiffOrPatch * remove GetRandomBytesAsBase64 * remove PushUpdateDeleteTags * remove GetUserByKeyID (you still can resolve user by "k, err := GetPublicKeyByID; userID := k.OwnerID") * remove BasicAuthEncode from struct package -> same function in modules/base/tools ! * remove UserID from api.utils * remove unused func from structs package
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2014 The Gogs Authors. All rights reserved.
 | 
						|
// Use of this source code is governed by a MIT-style
 | 
						|
// license that can be found in the LICENSE file.
 | 
						|
 | 
						|
package models
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"strings"
 | 
						|
)
 | 
						|
 | 
						|
// PushUpdateDeleteTagsContext updates a number of delete tags with context
 | 
						|
func PushUpdateDeleteTagsContext(ctx DBContext, repo *Repository, tags []string) error {
 | 
						|
	return pushUpdateDeleteTags(ctx.e, repo, tags)
 | 
						|
}
 | 
						|
 | 
						|
func pushUpdateDeleteTags(e Engine, repo *Repository, tags []string) error {
 | 
						|
	if len(tags) == 0 {
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
	lowerTags := make([]string, 0, len(tags))
 | 
						|
	for _, tag := range tags {
 | 
						|
		lowerTags = append(lowerTags, strings.ToLower(tag))
 | 
						|
	}
 | 
						|
 | 
						|
	if _, err := e.
 | 
						|
		Where("repo_id = ? AND is_tag = ?", repo.ID, true).
 | 
						|
		In("lower_tag_name", lowerTags).
 | 
						|
		Delete(new(Release)); err != nil {
 | 
						|
		return fmt.Errorf("Delete: %v", err)
 | 
						|
	}
 | 
						|
 | 
						|
	if _, err := e.
 | 
						|
		Where("repo_id = ? AND is_tag = ?", repo.ID, false).
 | 
						|
		In("lower_tag_name", lowerTags).
 | 
						|
		Cols("is_draft", "num_commits", "sha1").
 | 
						|
		Update(&Release{
 | 
						|
			IsDraft: true,
 | 
						|
		}); err != nil {
 | 
						|
		return fmt.Errorf("Update: %v", err)
 | 
						|
	}
 | 
						|
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
// PushUpdateDeleteTag must be called for any push actions to delete tag
 | 
						|
func PushUpdateDeleteTag(repo *Repository, tagName string) error {
 | 
						|
	rel, err := GetRelease(repo.ID, tagName)
 | 
						|
	if err != nil {
 | 
						|
		if IsErrReleaseNotExist(err) {
 | 
						|
			return nil
 | 
						|
		}
 | 
						|
		return fmt.Errorf("GetRelease: %v", err)
 | 
						|
	}
 | 
						|
	if rel.IsTag {
 | 
						|
		if _, err = x.ID(rel.ID).Delete(new(Release)); err != nil {
 | 
						|
			return fmt.Errorf("Delete: %v", err)
 | 
						|
		}
 | 
						|
	} else {
 | 
						|
		rel.IsDraft = true
 | 
						|
		rel.NumCommits = 0
 | 
						|
		rel.Sha1 = ""
 | 
						|
		if _, err = x.ID(rel.ID).AllCols().Update(rel); err != nil {
 | 
						|
			return fmt.Errorf("Update: %v", err)
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
// SaveOrUpdateTag must be called for any push actions to add tag
 | 
						|
func SaveOrUpdateTag(repo *Repository, newRel *Release) error {
 | 
						|
	rel, err := GetRelease(repo.ID, newRel.TagName)
 | 
						|
	if err != nil && !IsErrReleaseNotExist(err) {
 | 
						|
		return fmt.Errorf("GetRelease: %v", err)
 | 
						|
	}
 | 
						|
 | 
						|
	if rel == nil {
 | 
						|
		rel = newRel
 | 
						|
		if _, err = x.Insert(rel); err != nil {
 | 
						|
			return fmt.Errorf("InsertOne: %v", err)
 | 
						|
		}
 | 
						|
	} else {
 | 
						|
		rel.Sha1 = newRel.Sha1
 | 
						|
		rel.CreatedUnix = newRel.CreatedUnix
 | 
						|
		rel.NumCommits = newRel.NumCommits
 | 
						|
		rel.IsDraft = false
 | 
						|
		if rel.IsTag && newRel.PublisherID > 0 {
 | 
						|
			rel.PublisherID = newRel.PublisherID
 | 
						|
		}
 | 
						|
		if _, err = x.ID(rel.ID).AllCols().Update(rel); err != nil {
 | 
						|
			return fmt.Errorf("Update: %v", err)
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return nil
 | 
						|
}
 |