mirror of
https://github.com/Luzifer/twitch-bot.git
synced 2024-11-09 00:30:02 +00:00
35 lines
936 B
Go
35 lines
936 B
Go
package database
|
|
|
|
import (
|
|
"embed"
|
|
"io/fs"
|
|
"path"
|
|
"strings"
|
|
)
|
|
|
|
type (
|
|
// EmbedFSMigrator is a wrapper around embed.FS enabling ReadDir("/")
|
|
// which normally would cause an error as path "/" is not available
|
|
// within an embed.FS
|
|
EmbedFSMigrator struct {
|
|
BasePath string
|
|
embed.FS
|
|
}
|
|
)
|
|
|
|
// NewEmbedFSMigrator creates a new EmbedFSMigrator
|
|
func NewEmbedFSMigrator(fs embed.FS, basePath string) MigrationStorage {
|
|
return EmbedFSMigrator{BasePath: basePath, FS: fs}
|
|
}
|
|
|
|
// ReadDir Wraps embed.FS.ReadDir with adjustment of the path prefix
|
|
func (e EmbedFSMigrator) ReadDir(name string) ([]fs.DirEntry, error) {
|
|
name = path.Join(e.BasePath, strings.TrimPrefix(name, "/"))
|
|
return e.FS.ReadDir(name)
|
|
}
|
|
|
|
// ReadFile Wraps embed.FS.ReadFile with adjustment of the path prefix
|
|
func (e EmbedFSMigrator) ReadFile(name string) ([]byte, error) {
|
|
name = path.Join(e.BasePath, strings.TrimPrefix(name, "/"))
|
|
return e.FS.ReadFile(name)
|
|
}
|