mirror of
https://github.com/Luzifer/twitch-bot.git
synced 2024-12-21 04:11:16 +00:00
36 lines
936 B
Go
36 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)
|
||
|
}
|