mirror of
https://github.com/zitadel/zitadel.git
synced 2024-12-15 04:18:01 +00:00
5052aa1c12
* fix(asssets): correct remove asset objects with text column * fix(assets): type asset_type, correct and add unit tests * fix(assets): set unspecified objecttype to empty string Co-authored-by: Livio Spring <livio.a@gmail.com>
53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package static
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"io"
|
|
"time"
|
|
)
|
|
|
|
type CreateStorage func(client *sql.DB, rawConfig map[string]interface{}) (Storage, error)
|
|
|
|
type Storage interface {
|
|
PutObject(ctx context.Context, instanceID, location, resourceOwner, name, contentType string, objectType ObjectType, object io.Reader, objectSize int64) (*Asset, error)
|
|
GetObject(ctx context.Context, instanceID, resourceOwner, name string) ([]byte, func() (*Asset, error), error)
|
|
GetObjectInfo(ctx context.Context, instanceID, resourceOwner, name string) (*Asset, error)
|
|
RemoveObject(ctx context.Context, instanceID, resourceOwner, name string) error
|
|
RemoveObjects(ctx context.Context, instanceID, resourceOwner string, objectType ObjectType) error
|
|
//TODO: add functionality to move asset location
|
|
}
|
|
|
|
type ObjectType int32
|
|
|
|
const (
|
|
ObjectTypeUserAvatar ObjectType = iota
|
|
ObjectTypeStyling
|
|
)
|
|
|
|
func (o ObjectType) String() string {
|
|
switch o {
|
|
case ObjectTypeUserAvatar:
|
|
return "0"
|
|
case ObjectTypeStyling:
|
|
return "1"
|
|
default:
|
|
return ""
|
|
}
|
|
}
|
|
|
|
type Asset struct {
|
|
InstanceID string
|
|
ResourceOwner string
|
|
Name string
|
|
Hash string
|
|
Size int64
|
|
LastModified time.Time
|
|
Location string
|
|
ContentType string
|
|
}
|
|
|
|
func (a *Asset) VersionedName() string {
|
|
return a.Name + "?v=" + a.Hash
|
|
}
|