70 lines
2.1 KiB
Go
70 lines
2.1 KiB
Go
// Copyright 2024 The Forgejo Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package quota
|
|
|
|
import "fmt"
|
|
|
|
type (
|
|
LimitSubject int
|
|
LimitSubjects []LimitSubject
|
|
)
|
|
|
|
const (
|
|
LimitSubjectNone LimitSubject = iota
|
|
LimitSubjectSizeAll
|
|
LimitSubjectSizeReposAll
|
|
LimitSubjectSizeReposPublic
|
|
LimitSubjectSizeReposPrivate
|
|
LimitSubjectSizeGitAll
|
|
LimitSubjectSizeGitLFS
|
|
LimitSubjectSizeAssetsAll
|
|
LimitSubjectSizeAssetsAttachmentsAll
|
|
LimitSubjectSizeAssetsAttachmentsIssues
|
|
LimitSubjectSizeAssetsAttachmentsReleases
|
|
LimitSubjectSizeAssetsArtifacts
|
|
LimitSubjectSizeAssetsPackagesAll
|
|
LimitSubjectSizeWiki
|
|
|
|
LimitSubjectFirst = LimitSubjectSizeAll
|
|
LimitSubjectLast = LimitSubjectSizeWiki
|
|
)
|
|
|
|
var limitSubjectRepr = map[string]LimitSubject{
|
|
"none": LimitSubjectNone,
|
|
"size:all": LimitSubjectSizeAll,
|
|
"size:repos:all": LimitSubjectSizeReposAll,
|
|
"size:repos:public": LimitSubjectSizeReposPublic,
|
|
"size:repos:private": LimitSubjectSizeReposPrivate,
|
|
"size:git:all": LimitSubjectSizeGitAll,
|
|
"size:git:lfs": LimitSubjectSizeGitLFS,
|
|
"size:assets:all": LimitSubjectSizeAssetsAll,
|
|
"size:assets:attachments:all": LimitSubjectSizeAssetsAttachmentsAll,
|
|
"size:assets:attachments:issues": LimitSubjectSizeAssetsAttachmentsIssues,
|
|
"size:assets:attachments:releases": LimitSubjectSizeAssetsAttachmentsReleases,
|
|
"size:assets:artifacts": LimitSubjectSizeAssetsArtifacts,
|
|
"size:assets:packages:all": LimitSubjectSizeAssetsPackagesAll,
|
|
"size:assets:wiki": LimitSubjectSizeWiki,
|
|
}
|
|
|
|
func (subject LimitSubject) String() string {
|
|
for repr, limit := range limitSubjectRepr {
|
|
if limit == subject {
|
|
return repr
|
|
}
|
|
}
|
|
return "<unknown>"
|
|
}
|
|
|
|
func (subjects LimitSubjects) GoString() string {
|
|
return fmt.Sprintf("%T{%+v}", subjects, subjects)
|
|
}
|
|
|
|
func ParseLimitSubject(repr string) (LimitSubject, error) {
|
|
result, has := limitSubjectRepr[repr]
|
|
if !has {
|
|
return LimitSubjectNone, ErrParseLimitSubjectUnrecognized{Subject: repr}
|
|
}
|
|
return result, nil
|
|
}
|