472bf8b732
Co-Authored-By: Codex <noreply@openai.com>
51 lines
1.0 KiB
Go
51 lines
1.0 KiB
Go
package service
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/basketikun/infinite-canvas/model"
|
|
"github.com/basketikun/infinite-canvas/repository"
|
|
)
|
|
|
|
func ListAssets(q model.Query) (model.AssetList, error) {
|
|
items, total, err := repository.ListAssets(q)
|
|
if err != nil {
|
|
return model.AssetList{}, err
|
|
}
|
|
tags, err := repository.ListAssetTags(q)
|
|
if err != nil {
|
|
return model.AssetList{}, err
|
|
}
|
|
return model.AssetList{Items: items, Tags: tags, Total: int(total)}, nil
|
|
}
|
|
|
|
func SaveAsset(item model.Asset) (model.Asset, error) {
|
|
now := time.Now().Format(time.RFC3339)
|
|
if item.Type == "" {
|
|
item.Type = model.AssetTypeText
|
|
}
|
|
if item.ID == "" {
|
|
item.ID = newID("asset")
|
|
item.CreatedAt = now
|
|
}
|
|
item.UpdatedAt = now
|
|
if item.CoverURL == "" {
|
|
item.CoverURL = assetCoverURL(item)
|
|
}
|
|
return repository.SaveAsset(item)
|
|
}
|
|
|
|
func DeleteAsset(id string) error {
|
|
return repository.DeleteAsset(id)
|
|
}
|
|
|
|
func assetCoverURL(item model.Asset) string {
|
|
if item.CoverURL != "" {
|
|
return item.CoverURL
|
|
}
|
|
if item.Type == model.AssetTypeImage {
|
|
return item.URL
|
|
}
|
|
return ""
|
|
}
|