37 lines
979 B
Go
37 lines
979 B
Go
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
|
|
}
|