mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 00:20:25 +08:00 
			
		
		
		
	@@ -3,10 +3,12 @@
 | 
			
		||||
 | 
			
		||||
package system
 | 
			
		||||
 | 
			
		||||
import "context"
 | 
			
		||||
 | 
			
		||||
// StateStore is the interface to get/set app state items
 | 
			
		||||
type StateStore interface {
 | 
			
		||||
	Get(item StateItem) error
 | 
			
		||||
	Set(item StateItem) error
 | 
			
		||||
	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
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@ package system
 | 
			
		||||
import (
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/models/db"
 | 
			
		||||
	"code.gitea.io/gitea/models/unittest"
 | 
			
		||||
 | 
			
		||||
	"github.com/stretchr/testify/assert"
 | 
			
		||||
@@ -40,25 +41,25 @@ func TestAppStateDB(t *testing.T) {
 | 
			
		||||
	as := &DBStore{}
 | 
			
		||||
 | 
			
		||||
	item1 := new(testItem1)
 | 
			
		||||
	assert.NoError(t, as.Get(item1))
 | 
			
		||||
	assert.NoError(t, as.Get(db.DefaultContext, item1))
 | 
			
		||||
	assert.Equal(t, "", item1.Val1)
 | 
			
		||||
	assert.EqualValues(t, 0, item1.Val2)
 | 
			
		||||
 | 
			
		||||
	item1 = new(testItem1)
 | 
			
		||||
	item1.Val1 = "a"
 | 
			
		||||
	item1.Val2 = 2
 | 
			
		||||
	assert.NoError(t, as.Set(item1))
 | 
			
		||||
	assert.NoError(t, as.Set(db.DefaultContext, item1))
 | 
			
		||||
 | 
			
		||||
	item2 := new(testItem2)
 | 
			
		||||
	item2.K = "V"
 | 
			
		||||
	assert.NoError(t, as.Set(item2))
 | 
			
		||||
	assert.NoError(t, as.Set(db.DefaultContext, item2))
 | 
			
		||||
 | 
			
		||||
	item1 = new(testItem1)
 | 
			
		||||
	assert.NoError(t, as.Get(item1))
 | 
			
		||||
	assert.NoError(t, as.Get(db.DefaultContext, item1))
 | 
			
		||||
	assert.Equal(t, "a", item1.Val1)
 | 
			
		||||
	assert.EqualValues(t, 2, item1.Val2)
 | 
			
		||||
 | 
			
		||||
	item2 = new(testItem2)
 | 
			
		||||
	assert.NoError(t, as.Get(item2))
 | 
			
		||||
	assert.NoError(t, as.Get(db.DefaultContext, item2))
 | 
			
		||||
	assert.Equal(t, "V", item2.K)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,8 @@
 | 
			
		||||
package system
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/models/system"
 | 
			
		||||
	"code.gitea.io/gitea/modules/json"
 | 
			
		||||
 | 
			
		||||
@@ -14,8 +16,8 @@ import (
 | 
			
		||||
type DBStore struct{}
 | 
			
		||||
 | 
			
		||||
// Get reads the state item
 | 
			
		||||
func (f *DBStore) Get(item StateItem) error {
 | 
			
		||||
	content, err := system.GetAppStateContent(item.Name())
 | 
			
		||||
func (f *DBStore) Get(ctx context.Context, item StateItem) error {
 | 
			
		||||
	content, err := system.GetAppStateContent(ctx, item.Name())
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
@@ -26,10 +28,10 @@ func (f *DBStore) Get(item StateItem) error {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Set saves the state item
 | 
			
		||||
func (f *DBStore) Set(item StateItem) error {
 | 
			
		||||
func (f *DBStore) Set(ctx context.Context, item StateItem) error {
 | 
			
		||||
	b, err := json.Marshal(item)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	return system.SaveAppStateContent(item.Name(), util.BytesToReadOnlyString(b))
 | 
			
		||||
	return system.SaveAppStateContent(ctx, item.Name(), util.BytesToReadOnlyString(b))
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user