mirror of
https://codeberg.org/forgejo/forgejo
synced 2024-11-25 19:26:09 +01:00
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
|
||
|
}
|