snapshot of https://github.com/go-gitea/gitea.git (main, 2026-09-15; blobs > 131072B omitted)
Some checks failed
cache-seeder / prune (push) Has been skipped
cache-seeder / frontend (push) Failing after 3s
cache-seeder / python (push) Failing after 3s
cache-seeder / gobuild (push) Failing after 4s
cache-seeder / lint (bindata, lint-backend) (push) Failing after 3s
giteabot backport / giteabot (push) Has been skipped
giteabot / giteabot (push) Has been skipped
cache-prune / prune (push) Has been skipped
release-nightly-snapcraft / build-and-publish (ubuntu-24.04) (push) Has been cancelled
release-nightly-snapcraft / build-and-publish (ubuntu-24.04-arm) (push) Has been cancelled
release-nightly / nightly-binary (push) Has been cancelled
release-nightly / nightly-container (push) Has been cancelled
cron-renovate / cron-renovate (push) Has been skipped

This commit is contained in:
upstream-mirror
2026-09-15 21:41:59 +05:00
commit 52ae0c5802
6280 changed files with 624193 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
// Copyright 2021 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package system
import "context"
// StateStore is the interface to get/set app state items
type StateStore interface {
Get(ctx context.Context, item StateItem) error
Set(ctx context.Context, item StateItem) error
}
// StateItem provides the name for a state item. the name will be used to generate filenames, etc
type StateItem interface {
Name() string
}
// AppState contains the state items for the app
var AppState StateStore
// Init initialize AppState interface
func Init() error {
AppState = &DBStore{}
return nil
}

View File

@@ -0,0 +1,60 @@
// Copyright 2021 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package system
import (
"testing"
"gitea.dev/models/unittest"
"github.com/stretchr/testify/assert"
)
func TestMain(m *testing.M) {
unittest.MainTest(m, &unittest.TestOptions{FixtureFiles: []string{ /* load nothing */ }})
}
type testItem1 struct {
Val1 string
Val2 int
}
func (*testItem1) Name() string {
return "test-item1"
}
type testItem2 struct {
K string
}
func (*testItem2) Name() string {
return "test-item2"
}
func TestAppStateDB(t *testing.T) {
as := &DBStore{}
item1 := new(testItem1)
assert.NoError(t, as.Get(t.Context(), item1))
assert.Empty(t, item1.Val1)
assert.Equal(t, 0, item1.Val2)
item1 = new(testItem1)
item1.Val1 = "a"
item1.Val2 = 2
assert.NoError(t, as.Set(t.Context(), item1))
item2 := new(testItem2)
item2.K = "V"
assert.NoError(t, as.Set(t.Context(), item2))
item1 = new(testItem1)
assert.NoError(t, as.Get(t.Context(), item1))
assert.Equal(t, "a", item1.Val1)
assert.Equal(t, 2, item1.Val2)
item2 = new(testItem2)
assert.NoError(t, as.Get(t.Context(), item2))
assert.Equal(t, "V", item2.K)
}

36
modules/system/db.go Normal file
View File

@@ -0,0 +1,36 @@
// Copyright 2021 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package system
import (
"context"
"gitea.dev/models/system"
"gitea.dev/modules/json"
"gitea.dev/modules/util"
)
// DBStore can be used to store app state items in local filesystem
type DBStore struct{}
// Get reads the state item
func (f *DBStore) Get(ctx context.Context, item StateItem) error {
content, err := system.GetAppStateContent(ctx, item.Name())
if err != nil {
return err
}
if content == "" {
return nil
}
return json.Unmarshal(util.UnsafeStringToBytes(content), item)
}
// Set saves the state item
func (f *DBStore) Set(ctx context.Context, item StateItem) error {
b, err := json.Marshal(item)
if err != nil {
return err
}
return system.SaveAppStateContent(ctx, item.Name(), util.UnsafeBytesToString(b))
}

View File

@@ -0,0 +1,15 @@
// Copyright 2021 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package system
// RuntimeState contains app state for runtime, and we can save remote version for update checker here in future
type RuntimeState struct {
LastAppPath string `json:"last_app_path"`
LastCustomConf string `json:"last_custom_conf"`
}
// Name returns the item name
func (a RuntimeState) Name() string {
return "runtime-state"
}