feat(kol): KOL workspace services (profile/package/prompt/asset/renderer)
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/geo-platform/tenant-api/internal/shared/objectstorage"
|
||||
)
|
||||
|
||||
type KolPromptAsset struct {
|
||||
storage objectstorage.Client
|
||||
}
|
||||
|
||||
func NewKolPromptAsset(storage objectstorage.Client) *KolPromptAsset {
|
||||
return &KolPromptAsset{storage: storage}
|
||||
}
|
||||
|
||||
func (a *KolPromptAsset) assetKey(tenantID, promptID int64, revisionNo int) string {
|
||||
return fmt.Sprintf("kol-prompts/%d/%d/%d.txt", tenantID, promptID, revisionNo)
|
||||
}
|
||||
|
||||
func (a *KolPromptAsset) Put(ctx context.Context, tenantID, promptID int64, revisionNo int, content string) (string, error) {
|
||||
key := a.assetKey(tenantID, promptID, revisionNo)
|
||||
if err := a.storage.PutBytes(ctx, key, []byte(content), "text/plain; charset=utf-8"); err != nil {
|
||||
return "", err
|
||||
}
|
||||
return key, nil
|
||||
}
|
||||
|
||||
func (a *KolPromptAsset) Get(ctx context.Context, assetKey string) (string, error) {
|
||||
content, err := a.storage.GetBytes(ctx, assetKey)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return string(content), nil
|
||||
}
|
||||
Reference in New Issue
Block a user