423 lines
27 KiB
Go
423 lines
27 KiB
Go
// Code generated by go-bindata.
|
|
// sources:
|
|
// db/migrations/0001_initial_migration.sql
|
|
// db/migrations/0002_dex_admin.sql
|
|
// db/migrations/0003_user_created_at.sql
|
|
// db/migrations/0004_session_nonce.sql
|
|
// db/migrations/0005_refresh_token_create.sql
|
|
// db/migrations/0006_user_email_unique.sql
|
|
// db/migrations/0007_session_scope.sql
|
|
// db/migrations/0008_users_active_or_inactive.sql
|
|
// db/migrations/assets.go
|
|
// DO NOT EDIT!
|
|
|
|
package migrations
|
|
|
|
import (
|
|
"bytes"
|
|
"compress/gzip"
|
|
"fmt"
|
|
"io"
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
func bindataRead(data []byte, name string) ([]byte, error) {
|
|
gz, err := gzip.NewReader(bytes.NewBuffer(data))
|
|
if err != nil {
|
|
return nil, fmt.Errorf("Read %q: %v", name, err)
|
|
}
|
|
|
|
var buf bytes.Buffer
|
|
_, err = io.Copy(&buf, gz)
|
|
clErr := gz.Close()
|
|
|
|
if err != nil {
|
|
return nil, fmt.Errorf("Read %q: %v", name, err)
|
|
}
|
|
if clErr != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return buf.Bytes(), nil
|
|
}
|
|
|
|
type asset struct {
|
|
bytes []byte
|
|
info os.FileInfo
|
|
}
|
|
|
|
type bindataFileInfo struct {
|
|
name string
|
|
size int64
|
|
mode os.FileMode
|
|
modTime time.Time
|
|
}
|
|
|
|
func (fi bindataFileInfo) Name() string {
|
|
return fi.name
|
|
}
|
|
func (fi bindataFileInfo) Size() int64 {
|
|
return fi.size
|
|
}
|
|
func (fi bindataFileInfo) Mode() os.FileMode {
|
|
return fi.mode
|
|
}
|
|
func (fi bindataFileInfo) ModTime() time.Time {
|
|
return fi.modTime
|
|
}
|
|
func (fi bindataFileInfo) IsDir() bool {
|
|
return false
|
|
}
|
|
func (fi bindataFileInfo) Sys() interface{} {
|
|
return nil
|
|
}
|
|
|
|
var _dbMigrations0001_initial_migrationSql = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x9c\x93\xcf\x8a\xdb\x30\x10\xc6\xef\x79\x0a\x91\xd3\x86\x66\x9f\xa0\xa7\x6d\x71\x61\xa1\xb4\xd0\x75\xa1\x37\x31\xb5\x26\xee\x50\xfd\x43\x1a\x6f\xd7\x6f\x5f\xd9\x4e\x14\xc7\xce\xc6\x26\x81\x84\x58\xd6\xfc\xe6\x9b\x6f\x66\x1e\x1f\xc5\x07\x43\x75\x00\x46\xf1\xd3\x6f\x3e\xff\x28\x9e\xca\x42\x94\x4f\x9f\xbe\x16\xe2\xf9\x8b\xf8\xf6\xbd\x14\xc5\xaf\xe7\x97\xf2\x45\x6c\xa1\xe1\x3f\x4a\x36\x11\xc3\x56\x3c\x6c\xc4\xf0\xd9\x92\xda\x0a\xc6\x37\x16\xd6\xa5\x6f\xa3\xb5\xf0\x81\x0c\x84\x56\xfc\xc5\x76\x9f\xaf\xa1\x01\xd2\xc3\xcd\xc9\xa1\x7c\xc5\x40\x07\xc2\xc4\xf9\xed\x9c\x46\xb0\xe7\x0b\x8a\xa2\xd7\xd0\x4a\x0b\x06\xa7\xc1\xa0\x0c\xd9\x1c\xb3\x13\x1f\x37\x37\xd5\x57\x9a\xd0\xb2\x24\x95\x7e\x89\xdb\x3b\x4a\x88\x58\x05\xe4\x94\xb1\x65\x84\xf3\xb1\x41\x06\x05\x0c\x03\x63\xb7\x24\xc3\x59\x8b\x15\xbb\x20\xd3\xbf\x03\xd5\x77\xe8\xe0\xd6\x9f\xcc\xe8\x79\x3d\xa5\xcf\xbd\xe4\x41\xc2\x8c\xf3\xbd\x82\x6e\xf0\x58\xcf\xd5\x9c\x8b\x40\x0f\x31\xfe\x73\x41\x49\xb2\x07\x37\x46\x77\x53\x22\x57\xd6\x73\x82\x4c\x1b\x9c\xe1\xf8\xe6\x29\x60\x4c\x4a\xa9\x26\xbb\x5c\x66\xc4\x18\xc9\xd9\x7b\x5a\xcc\x69\x0f\xa6\x3a\x52\xd7\xd3\xa9\x92\xc0\x27\x05\xa3\x09\x1e\xa4\x5d\x7d\x97\x27\x6e\x06\x1c\x5e\x5c\x4d\x16\x50\x25\x60\xc5\xb2\x09\x3a\x37\xf9\x3c\xb4\x13\x50\x1e\xa6\x79\x92\x8b\x0e\xec\x3b\x70\x4d\x91\xbb\xdd\x5d\xbb\x31\x47\x1b\xe5\x64\x6a\xfa\xc7\x55\xeb\x32\x84\xcf\xa5\xdd\x32\x2d\x99\xa2\x71\xbd\xc6\x80\xc6\x31\xe6\xad\x96\x06\xbc\x27\x7b\xb1\x55\x73\x93\xb2\xf0\xf7\xdc\x1a\x75\xe3\x88\x7f\x2f\x70\x54\xb9\x78\xb8\x4c\xb5\x1f\x87\xef\xba\x4a\xfe\x07\x00\x00\xff\xff\xae\xbe\x65\x61\x6c\x05\x00\x00")
|
|
|
|
func dbMigrations0001_initial_migrationSqlBytes() ([]byte, error) {
|
|
return bindataRead(
|
|
_dbMigrations0001_initial_migrationSql,
|
|
"db/migrations/0001_initial_migration.sql",
|
|
)
|
|
}
|
|
|
|
func dbMigrations0001_initial_migrationSql() (*asset, error) {
|
|
bytes, err := dbMigrations0001_initial_migrationSqlBytes()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
info := bindataFileInfo{name: "db/migrations/0001_initial_migration.sql", size: 1388, mode: os.FileMode(420), modTime: time.Unix(1, 0)}
|
|
a := &asset{bytes: bytes, info: info}
|
|
return a, nil
|
|
}
|
|
|
|
var _dbMigrations0002_dex_adminSql = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd2\xd5\x55\xd0\xce\xcd\x4c\x2f\x4a\x2c\x49\x55\x08\x2d\xe0\x72\xf4\x09\x71\x0d\x52\x08\x71\x74\xf2\x71\x55\x48\xce\xc9\x4c\xcd\x2b\x89\xcf\x4c\x01\x92\x99\x25\x95\x0a\x8e\x2e\x2e\x0a\xce\xfe\x3e\xa1\xbe\x7e\x0a\x4a\x29\xa9\x15\xf1\x89\x29\xb9\x99\x79\x4a\x0a\x49\xf9\xf9\x39\xa9\x89\x79\xd6\x5c\x5c\xa1\x01\x2e\x8e\x21\xae\x0a\x4a\x68\x1a\x95\x14\x82\x5d\x43\x50\xb4\xd8\x2a\xa4\x25\xe6\x14\xa7\x5a\x73\x01\x02\x00\x00\xff\xff\x89\xb3\xb1\x5d\x7e\x00\x00\x00")
|
|
|
|
func dbMigrations0002_dex_adminSqlBytes() ([]byte, error) {
|
|
return bindataRead(
|
|
_dbMigrations0002_dex_adminSql,
|
|
"db/migrations/0002_dex_admin.sql",
|
|
)
|
|
}
|
|
|
|
func dbMigrations0002_dex_adminSql() (*asset, error) {
|
|
bytes, err := dbMigrations0002_dex_adminSqlBytes()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
info := bindataFileInfo{name: "db/migrations/0002_dex_admin.sql", size: 126, mode: os.FileMode(420), modTime: time.Unix(1, 0)}
|
|
a := &asset{bytes: bytes, info: info}
|
|
return a, nil
|
|
}
|
|
|
|
var _dbMigrations0003_user_created_atSql = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd2\xd5\x55\xd0\xce\xcd\x4c\x2f\x4a\x2c\x49\x55\x08\x2d\xe0\x72\xf4\x09\x71\x0d\x52\x08\x71\x74\xf2\x71\x55\x48\x2c\x2d\xc9\x48\x89\x2f\x2d\x4e\x2d\x52\x70\x74\x71\x51\x70\xf6\xf7\x09\xf5\xf5\x53\x50\x4a\x2e\x4a\x05\x2a\x4e\x89\x4f\x2c\x51\x52\x48\xca\x4c\xcf\xcc\x2b\xb1\xe6\xe2\x0a\x0d\x70\x71\x0c\x41\xd1\x12\xec\x1a\x82\xaa\xd6\x56\xc1\xc0\x9a\x0b\x10\x00\x00\xff\xff\x28\xce\xe1\xe1\x6f\x00\x00\x00")
|
|
|
|
func dbMigrations0003_user_created_atSqlBytes() ([]byte, error) {
|
|
return bindataRead(
|
|
_dbMigrations0003_user_created_atSql,
|
|
"db/migrations/0003_user_created_at.sql",
|
|
)
|
|
}
|
|
|
|
func dbMigrations0003_user_created_atSql() (*asset, error) {
|
|
bytes, err := dbMigrations0003_user_created_atSqlBytes()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
info := bindataFileInfo{name: "db/migrations/0003_user_created_at.sql", size: 111, mode: os.FileMode(420), modTime: time.Unix(1, 0)}
|
|
a := &asset{bytes: bytes, info: info}
|
|
return a, nil
|
|
}
|
|
|
|
var _dbMigrations0004_session_nonceSql = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd2\xd5\x55\xd0\xce\xcd\x4c\x2f\x4a\x2c\x49\x55\x08\x2d\xe0\x72\xf4\x09\x71\x0d\x52\x08\x71\x74\xf2\x71\x55\x28\x4e\x2d\x2e\xce\xcc\xcf\x53\x70\x74\x71\x51\x70\xf6\xf7\x09\xf5\xf5\x53\x50\xca\xcb\xcf\x4b\x4e\x55\x52\x28\x49\xad\x28\xb1\xe6\x02\x04\x00\x00\xff\xff\x77\x11\x16\x8b\x3c\x00\x00\x00")
|
|
|
|
func dbMigrations0004_session_nonceSqlBytes() ([]byte, error) {
|
|
return bindataRead(
|
|
_dbMigrations0004_session_nonceSql,
|
|
"db/migrations/0004_session_nonce.sql",
|
|
)
|
|
}
|
|
|
|
func dbMigrations0004_session_nonceSql() (*asset, error) {
|
|
bytes, err := dbMigrations0004_session_nonceSqlBytes()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
info := bindataFileInfo{name: "db/migrations/0004_session_nonce.sql", size: 60, mode: os.FileMode(420), modTime: time.Unix(1, 0)}
|
|
a := &asset{bytes: bytes, info: info}
|
|
return a, nil
|
|
}
|
|
|
|
var _dbMigrations0005_refresh_token_createSql = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x84\x90\x51\x4f\xc2\x30\x10\xc7\xdf\xf7\x29\xee\x0d\x88\x62\xc2\x2b\x3e\x95\xed\x0c\x8b\x5d\xa7\x5d\x2b\xf2\xb4\x14\x56\xa1\x61\x8e\xb9\x56\xe3\xbe\xbd\x65\x13\x0c\xc4\x68\xdf\xfa\xbb\xfb\xdf\x2f\x77\xe3\x31\x5c\xbd\x9a\x4d\xa3\x9c\x06\x59\x07\x21\x47\x22\x10\x04\x99\x51\x84\x46\xbf\x34\xda\x6e\x73\xb7\xdf\xe9\x0a\x86\x01\xf8\x67\x0a\x58\x99\x8d\xa9\x1c\xb0\x54\x00\x93\x94\x5e\x77\xbc\x56\x6d\xb9\x57\x45\xbe\x55\x76\x0b\xab\xd6\x69\xd5\xf3\x77\xab\x9b\xdc\x87\x9c\xfe\x74\x3d\x59\x97\x46\x57\xee\xc8\x82\xd1\x6d\x70\xb4\x66\xf8\x28\x91\x85\x17\x62\xdf\x99\x5b\xfd\xd6\x65\x33\x41\xb8\x80\x45\x2c\xe6\x30\xe9\x40\xcc\x7c\x36\x41\x26\x60\xb6\xfc\x46\x2c\x85\x24\x66\x4f\x84\x4a\x3c\xfd\xc9\xf3\xcf\x3f\x24\xe1\x1c\x61\xe2\xb5\x84\x0a\xe4\x7f\x5b\x21\x5d\x30\x8c\x0e\xc3\xcf\xaa\x37\xa6\x38\xe5\xfb\x5b\xa5\x8c\x5e\xf4\x40\x5f\x0e\x53\x2a\x13\x76\xb8\x5b\x86\x02\x22\xbc\x23\x92\x0a\xa8\xfc\xea\x1f\xaa\x1c\x0e\x7e\x93\x0e\xa6\xd3\x46\x6f\xd6\xa5\xb2\x76\xf4\xaf\xa6\xdb\x89\x44\x91\x17\xb1\x4c\x70\x12\xfb\x5b\x9c\x0f\xad\x77\xba\x85\x07\x1e\x27\x84\x2f\xe1\x1e\x97\x30\x34\x85\x9f\xfb\x15\x00\x00\xff\xff\xc4\xcc\xa8\xfd\xfa\x01\x00\x00")
|
|
|
|
func dbMigrations0005_refresh_token_createSqlBytes() ([]byte, error) {
|
|
return bindataRead(
|
|
_dbMigrations0005_refresh_token_createSql,
|
|
"db/migrations/0005_refresh_token_create.sql",
|
|
)
|
|
}
|
|
|
|
func dbMigrations0005_refresh_token_createSql() (*asset, error) {
|
|
bytes, err := dbMigrations0005_refresh_token_createSqlBytes()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
info := bindataFileInfo{name: "db/migrations/0005_refresh_token_create.sql", size: 506, mode: os.FileMode(420), modTime: time.Unix(1, 0)}
|
|
a := &asset{bytes: bytes, info: info}
|
|
return a, nil
|
|
}
|
|
|
|
var _dbMigrations0006_user_email_uniqueSql = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd2\xd5\x55\xd0\xce\xcd\x4c\x2f\x4a\x2c\x49\x55\x08\x2d\xe0\x72\xf4\x09\x71\x0d\x52\x08\x71\x74\xf2\x71\x55\xf0\xf7\xf3\x89\x54\x48\x2c\x2d\xc9\x48\x89\x2f\x2d\x4e\x2d\xe2\x52\x00\x02\x47\x17\x17\x05\x67\x7f\xbf\xe0\x90\x20\x47\x4f\xbf\x10\x24\xd9\xf8\xd4\xdc\xc4\xcc\x9c\xf8\xec\xd4\x4a\x85\x50\x3f\xcf\xc0\x50\x57\x05\x0d\xb0\x88\xa6\x35\x17\x20\x00\x00\xff\xff\x18\x48\x0d\x30\x63\x00\x00\x00")
|
|
|
|
func dbMigrations0006_user_email_uniqueSqlBytes() ([]byte, error) {
|
|
return bindataRead(
|
|
_dbMigrations0006_user_email_uniqueSql,
|
|
"db/migrations/0006_user_email_unique.sql",
|
|
)
|
|
}
|
|
|
|
func dbMigrations0006_user_email_uniqueSql() (*asset, error) {
|
|
bytes, err := dbMigrations0006_user_email_uniqueSqlBytes()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
info := bindataFileInfo{name: "db/migrations/0006_user_email_unique.sql", size: 99, mode: os.FileMode(420), modTime: time.Unix(1, 0)}
|
|
a := &asset{bytes: bytes, info: info}
|
|
return a, nil
|
|
}
|
|
|
|
var _dbMigrations0007_session_scopeSql = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd2\xd5\x55\xd0\xce\xcd\x4c\x2f\x4a\x2c\x49\x55\x08\x2d\xe0\x72\xf4\x09\x71\x0d\x52\x08\x71\x74\xf2\x71\x55\x28\x4e\x2d\x2e\xce\xcc\xcf\x53\x70\x74\x71\x51\x70\xf6\xf7\x09\xf5\xf5\x53\x50\x2a\x4e\xce\x2f\x48\x55\x52\x28\x49\xad\x28\xb1\xe6\x02\x04\x00\x00\xff\xff\x79\x7f\x20\x70\x3c\x00\x00\x00")
|
|
|
|
func dbMigrations0007_session_scopeSqlBytes() ([]byte, error) {
|
|
return bindataRead(
|
|
_dbMigrations0007_session_scopeSql,
|
|
"db/migrations/0007_session_scope.sql",
|
|
)
|
|
}
|
|
|
|
func dbMigrations0007_session_scopeSql() (*asset, error) {
|
|
bytes, err := dbMigrations0007_session_scopeSqlBytes()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
info := bindataFileInfo{name: "db/migrations/0007_session_scope.sql", size: 60, mode: os.FileMode(420), modTime: time.Unix(1, 0)}
|
|
a := &asset{bytes: bytes, info: info}
|
|
return a, nil
|
|
}
|
|
|
|
var _dbMigrations0008_users_active_or_inactiveSql = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd2\xd5\x55\xd0\xce\xcd\x4c\x2f\x4a\x2c\x49\x55\x08\x2d\xe0\x72\xf4\x09\x71\x0d\x52\x08\x71\x74\xf2\x71\x55\x48\x2c\x2d\xc9\x48\x89\x2f\x2d\x4e\x2d\x52\x70\x74\x71\x51\x70\xf6\xf7\x09\xf5\xf5\x53\x48\xc9\x2c\x4e\x4c\xca\x49\x4d\x51\x48\xca\xcf\xcf\x49\x4d\xcc\xb3\xe6\xe2\x0a\x0d\x70\x71\x0c\x41\x51\x1f\xec\x1a\xa2\xa0\x04\x53\xa9\xa4\x60\xab\xe0\xe6\xe8\x13\xec\x6a\xcd\x05\x08\x00\x00\xff\xff\x06\x75\x98\x47\x6e\x00\x00\x00")
|
|
|
|
func dbMigrations0008_users_active_or_inactiveSqlBytes() ([]byte, error) {
|
|
return bindataRead(
|
|
_dbMigrations0008_users_active_or_inactiveSql,
|
|
"db/migrations/0008_users_active_or_inactive.sql",
|
|
)
|
|
}
|
|
|
|
func dbMigrations0008_users_active_or_inactiveSql() (*asset, error) {
|
|
bytes, err := dbMigrations0008_users_active_or_inactiveSqlBytes()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
info := bindataFileInfo{name: "db/migrations/0008_users_active_or_inactive.sql", size: 110, mode: os.FileMode(420), modTime: time.Unix(1, 0)}
|
|
a := &asset{bytes: bytes, info: info}
|
|
return a, nil
|
|
}
|
|
|
|
var _dbMigrationsAssetsGo = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd4\x99\xdf\x6f\xdb\x46\x12\xc7\x9f\xad\xbf\x82\x35\xd0\x42\x3a\xf8\x64\x92\x22\x45\xca\x40\x5e\x9a\xe4\x80\x3c\x34\x05\xae\xb9\xa7\xf3\x41\x58\x92\x4b\x97\xa8\x2c\x3a\xa2\x9c\x73\x12\xe4\x7f\xbf\xf9\xec\x8c\x5c\x27\x96\x9c\x5f\x17\x04\x7d\x60\x2c\x2e\x67\xe7\xf7\xcc\xce\x7e\x73\x7a\x1a\x3d\xee\x1b\x1f\x5d\xf8\xb5\xdf\xb8\xad\x6f\xa2\xea\x75\x74\xd1\xff\xbd\xea\xd6\x8d\xdb\xba\xe9\x48\x08\x86\xfe\x7a\x53\xfb\xe1\x8c\xdf\x4d\x75\x7a\xd9\x5d\x08\x65\xd7\xaf\x87\xd3\x38\x8e\x93\x65\xb7\xee\xb6\x9d\x5b\x2d\x6f\xd7\xa7\xc3\xcb\xd5\x5e\xda\x74\xd9\xf8\x9b\xa5\x6b\x2e\xbb\xc3\x34\xb3\xe5\xf5\xe0\x37\xcb\x7a\xe3\xd1\x66\xe9\xb6\x07\x29\xb3\xe5\xe0\x87\x41\xde\x96\xeb\x7e\x5d\xfb\x83\x74\xf9\x72\xe3\xdb\x8d\x1f\x7e\x5f\x6e\xfb\x3f\xfc\xda\x58\x1f\x24\x9f\xab\x02\xfe\xd2\x75\xab\xe5\xf5\xba\x7b\x79\x7d\x98\xb6\xb8\x55\x61\xa8\xfb\xab\xc3\x74\x65\xe0\x39\x2c\x5d\xbd\xed\x5e\xf9\x65\xbf\x11\xa7\xe9\xef\xfd\x5b\xdc\x30\xf8\xed\x30\xbd\xe8\xf9\xf4\xe4\xd7\xe8\xf9\xaf\x2f\xa2\xa7\x4f\x9e\xbd\xf8\x61\x34\xba\x72\xf5\x1f\xee\xc2\x47\x7f\x52\x8f\x46\xdd\xe5\x55\xbf\xd9\x46\xe3\xd1\xd1\x71\xf5\x7a\xeb\x87\x63\xf9\x51\xf7\x97\x57\x62\xf4\x70\x7a\xf1\xa6\xbb\x62\xa1\xbd\xdc\xf2\xa7\xeb\xf9\x77\xd8\x6e\xba\xf5\x45\x20\xec\xc3\xbf\xdb\xee\xd2\xeb\xe7\xd3\xae\xbf\xde\x76\x2b\x5e\xae\xdc\xf6\xf7\xd3\xb6\x5b\x79\x7e\x1c\x8f\x26\xa3\x51\x7b\xbd\xae\x23\xcb\x8d\x7f\x7a\xd7\x8c\xf9\x11\xfd\xfb\x3f\x88\x3d\x89\xd6\xee\xd2\x47\xca\x7a\x12\x8d\x77\xab\x7e\xb3\xe9\x37\x93\xe8\xed\xe8\xe8\xe2\x4d\x78\x8b\xce\x1e\x45\x68\x35\x7d\xee\xff\x0b\x13\xbf\x19\x07\xb5\x79\xff\xf9\xba\x6d\xe5\x1d\xb6\x93\xc9\xe8\xa8\x6b\xc3\x86\x1f\x1e\x45\xeb\x6e\x05\x8b\xa3\x8d\xdf\x5e\x6f\xd6\xbc\x9e\x44\x62\xd2\xf4\x29\xdc\xdb\xf1\x31\x8c\xa2\x1f\x5f\x9e\x45\x3f\xbe\x3a\x56\x4d\x82\x2c\xe1\xf1\x6e\x34\x3a\x7a\xe5\x36\x51\x75\xdd\x46\x2a\x47\x85\x8c\x8e\x96\xaa\xce\xa3\xa8\xeb\xa7\x8f\xfb\xab\xd7\xe3\x9f\x84\xe6\x44\x74\x93\x5d\xf5\xea\xe9\x4e\xd3\xe9\xe3\x55\x3f\xf8\xb1\x98\xff\x7f\xd2\x07\x36\xca\xff\x00\x23\x21\x54\xbd\x6d\x51\xd4\x9a\xfe\x8c\xea\xe3\xc9\x09\x14\x23\xf9\xb6\x7d\x7d\xe5\xa3\x90\x28\xb8\xfc\xba\xde\xc2\x25\xd8\x67\xf1\x10\x31\xeb\xb6\x8f\xa2\x7e\x98\xfe\x43\x62\xf8\x4c\x5e\x6e\xf7\x59\x08\x77\xeb\x77\x38\xdc\x89\xe1\xe8\x68\xe8\xde\xf8\xa8\x5b\x6f\xe7\xd9\xe8\xe8\x92\x36\x61\xbc\x7e\x91\xdf\x61\xe5\x85\xa4\x4d\x44\xee\x4c\xf9\x05\xfb\x90\x21\xe3\xb6\xfb\x50\xc4\x24\x7a\x2e\x9c\xc7\x13\xe3\x8d\x28\x33\xae\xed\xa6\x08\x95\xcd\x87\xf7\xfe\x26\x8a\xc8\xde\xa0\xca\xfb\x5b\x51\xf1\xc1\xad\xe8\x2a\x5b\xef\x68\xfe\x3e\x03\xec\xfa\x18\x03\x8c\x13\x1e\xb7\x86\xde\xe3\x60\xd6\x1f\x66\xf2\x6c\x78\xd2\x6d\x84\x45\xd5\xf7\xab\xbb\xbb\xdd\x6a\xf8\x88\xe5\xaf\x07\x35\xdc\x6f\x5a\x57\xfb\xb7\xef\xee\xec\xb6\x4c\x20\xb9\x97\x4d\xf5\xcb\x6d\x47\xd8\xdf\x96\x7f\x7b\xb9\x92\x54\xd7\xdc\x18\x1f\x9f\xdf\x24\xed\xf9\x4d\x59\x9d\xdf\xc4\xa5\x3c\xb1\x3d\x8b\xf3\x9b\xb9\x97\x75\x5b\x6b\x85\x66\x51\xcb\x33\x3b\xbf\xa9\xa1\x77\xe7\x37\x8d\xec\x99\xc9\xb7\x44\x9e\x7a\x7e\x7e\xe3\x65\xbd\x90\x7d\xb1\x7c\x5b\x24\xf2\x5d\x68\x4b\x59\x9f\xcb\xb3\x90\x6f\x4e\xe8\x5c\x21\xef\x8d\xd0\xc9\xf7\xb9\x3c\x4e\x9e\x2a\x13\x5a\xf9\x56\xe4\xfa\x3e\x13\x9a\x19\xeb\xf2\x9e\xc2\x57\xf4\xc8\xd1\x41\xf6\x65\xc2\x33\x11\xfe\x73\xe1\xd7\x14\xfa\x37\xe7\xb7\xc8\xcd\x84\x2e\x11\x5e\xb5\xac\xd7\x5e\x75\x62\x7f\x29\xbc\x4a\x59\xcf\xc5\x96\x46\xde\x5b\xb1\xc3\xa3\x53\xa5\xfb\xd1\x2f\xf1\xea\x87\x5a\x64\xc6\x85\xca\x41\x1f\x6c\xcf\xd8\x63\xf6\x40\x3f\xf3\xea\x8f\x54\xf8\x2d\x90\x23\xfa\x64\xa9\xfc\x16\x19\x59\xab\xb6\x56\xf0\x43\x77\x59\x6f\x17\xea\xdf\x56\xe8\x5b\x59\xab\x1a\xd3\x13\x7b\x85\xd6\x8b\xbc\x85\x3c\xad\xd0\x66\xb2\x36\xaf\xd5\x0f\x1e\x5f\xc8\xf7\x4c\xf8\xcf\xd0\x51\xde\x6b\xd1\x21\x97\xdf\xb3\x5a\xe9\x6a\xe1\xd3\xc6\x6a\xff\x42\xf6\x37\x4e\xfd\x8f\xed\xf8\x11\x1d\xb0\xd9\xe5\xaa\xbb\x9b\xa9\x5f\xd9\x83\x5f\xe2\xda\x7c\x63\x7e\x41\xa7\x62\x17\xaf\x56\xf5\x88\xb1\x3d\x55\xd9\xb5\xe8\x5e\x2f\x74\xbd\x30\xfa\x2c\x56\x9f\xd5\xa9\xe9\x23\xdf\x7d\xa3\xf9\x82\xef\xaa\x58\x6d\x8c\x2b\xcd\x1b\x97\x6a\xec\x88\x39\xb6\xb1\x1e\xcf\x35\x37\xea\x44\xf3\x04\xbd\xb0\x29\x91\xbf\x15\x31\x9f\x69\x7c\x42\x6e\xb0\x57\xe4\xe6\xf8\xcd\x29\x9f\x4a\x78\xa6\x22\x7b\x81\xfe\xe4\xed\xc2\xf2\xb3\x52\x19\xe4\x31\xf1\x8f\xe5\xbb\xcf\x34\x56\x15\x39\x98\xab\xfd\xed\x4c\xdf\xb3\x44\x75\x81\x0e\x1d\x62\x62\xce\xb7\x42\xf9\x07\xff\x5b\x3c\x13\xa1\xa9\xe4\x6f\x1a\x6b\x6e\x54\xad\xd2\xa3\x5b\x21\xf4\x5e\xe4\xf9\x58\xfd\x8f\x3f\xeb\x5a\xd7\xa8\x91\x59\xa3\x31\xa1\x96\xc8\x07\x74\x42\x36\x3e\x2c\x6b\xd3\x47\xd6\xcb\x54\xeb\x90\x78\xa1\x3f\xf4\xf0\xc7\xb7\xe8\x10\x7c\xdf\x6a\xbd\xb4\x42\x57\xcc\x94\x4f\xb6\x50\x9f\xc4\xe6\x2f\xe2\x80\x4e\xb9\x7c\x4f\x53\xf5\x1d\x7a\x41\x8f\x8c\x4c\xf8\x25\x95\xf2\x25\xef\xc8\x55\x6a\x24\xa5\x0f\xc4\xfa\x1d\x3f\xba\x85\xd6\x14\x76\xe7\xb5\xd6\x0e\x31\x4f\x4a\xcd\x0b\x62\x56\xf0\xcd\xa9\xbd\xf3\x85\xea\xe7\xc8\x47\x59\xcb\x77\xb1\x9f\x29\x2f\x72\xb6\x16\xfe\x69\xa1\x3e\x27\x3f\xe9\x3d\xd4\xa3\x23\x2f\xe9\x15\x8d\xd6\x07\x34\xf8\x82\xf8\x90\x17\xb9\x57\x1d\xb2\x46\xf3\x9c\x1e\x91\xe6\xaa\x2f\x79\x19\xec\x5f\xa8\x5c\x7c\x40\x5e\x52\x37\xf4\x1b\xf2\x09\xfa\x20\x67\xae\x31\x41\x97\xd0\x07\x65\xcd\xd7\x9a\x3b\x45\xac\xfc\xe9\x67\xd8\xdc\x34\xaa\x13\xbf\xf1\x79\x56\xa8\xdf\x3c\x72\x85\xef\x5c\x64\xb5\x4e\x7b\x50\x4e\xae\x41\x97\x6a\x8e\x11\x3b\x62\x0e\x0f\xd6\x52\xf8\x2e\xb4\x1e\xe8\x87\xc4\x9b\xba\x2d\xad\x9f\xc2\x9f\x18\x38\xe8\xe6\x6a\x77\x55\xab\x1f\xf0\x31\xf9\x8a\x0c\x62\x48\x5f\xc6\x5e\xf2\xa4\xc5\xbf\xb5\xf6\x49\x7a\x98\x9f\x69\xfe\x17\xf4\xac\x56\x6d\xca\xc9\x7f\x62\x25\xeb\x55\xa9\xf1\xa5\x2f\x84\xb3\xa0\xd0\x5e\x5e\x39\x8d\x39\x79\x45\x1e\xed\xce\x06\x7a\x1f\x8f\xf3\xda\xe7\xa8\x21\x7a\x39\xfd\x28\xce\x77\x74\xc7\xbb\x29\xf1\x93\x0e\x24\x1b\x6a\xf6\x0d\x8b\xbb\xd1\xe7\xce\xb0\x29\x53\xd2\xa7\x9d\x73\x27\x42\x79\xfc\xa9\x57\x95\x63\xa1\x9e\xdc\x8e\x2e\x9f\xc4\x1f\x8d\xff\x16\x66\xaf\xbb\x1a\x87\xe1\xeb\x76\xc2\xfd\x1c\xfb\x3f\x36\x58\xde\xce\x83\x61\xa2\x13\xe6\x1f\x8c\x09\x6f\x19\xa0\xce\xa2\xcf\x30\x39\x62\x6e\x3a\x8b\x92\x59\x59\x9e\x44\x8c\x40\x67\x77\x27\xa4\x71\x96\xc6\x93\xb0\xce\x60\x73\xa6\x83\xcf\xbf\xd6\xdd\xcd\x38\x39\x89\xe2\x89\x4c\xb0\x0e\x2d\x7e\x0a\x2e\x78\x1b\xec\x3e\x8b\xcc\x7c\x54\x3c\x8b\xc2\x9f\x77\xb7\x51\x74\x27\x0f\x0d\x2b\x77\xee\x85\x5f\x3a\xa4\x70\x50\x85\xc3\x21\xd7\x83\x21\x0c\x02\x8d\x26\x78\x6a\x87\x69\x5a\x6b\x83\x84\x06\x7e\x14\x22\x8d\xba\xa0\x80\x32\xe5\x4b\x41\xc6\x8d\x36\x2c\x68\x78\x2f\x32\x3d\xa4\x0b\x2b\xbc\xac\x34\xfe\x0b\xe5\x8f\x9c\xb4\xd2\xc3\x87\x62\x67\x8d\xc3\x93\xc6\x42\xa1\xd3\x9c\x38\xa0\x38\xa0\x4b\xd9\x97\xda\x13\x0e\x6c\xaf\x85\xc6\x70\x11\x86\x22\xaf\x07\x59\x6c\x45\x48\x23\xa6\x61\x72\xe8\x30\x8c\x20\x83\x35\x8a\x18\xde\x34\xb0\xcc\x0e\x7f\x6c\x6b\xed\x99\xd9\xbe\xd2\x68\x68\xfa\x34\xcd\xbc\xfe\xf3\x70\x47\x87\xa0\x4f\xa2\x45\xbd\x93\x39\x2f\xb5\x89\xa0\x33\x03\x0b\x07\x45\x6e\x43\x18\xcd\x33\x0c\x6e\xf8\xcf\x69\xb3\xc6\x3e\x1a\x16\xb4\x1c\xe6\x1c\x02\x34\x27\x64\xc4\xe9\xfd\x06\x82\x4e\x95\x1d\xbc\xa1\xd1\xfb\x3b\xb1\x3d\xd8\x40\xde\x4f\x92\xaf\x6e\x1c\xef\xb3\xdb\xdf\x30\x3e\xc0\x2b\x1e\x6c\x14\xef\xf3\xfb\x82\x06\xb1\xd7\xbe\x6f\xd6\x18\xee\x99\xb6\x6b\x08\xe9\xfc\xfb\xf7\x83\x7b\x18\xd0\x5f\xa5\x2b\xc0\x2b\xb5\x51\x99\xf7\x50\xad\xad\xae\x71\x4d\x49\x8d\x07\x47\x31\xfb\xc3\xde\x44\xdf\xb9\x22\x70\x84\x23\xaf\xcd\xf5\xc9\xad\xe2\x82\x9e\xde\x2a\x3d\xd7\xca\xcb\x6c\xdc\xe5\xea\x81\x5c\xf8\xc0\x3b\x74\x27\x67\x9d\xc9\xc6\xcf\xd4\xc6\x06\x6f\x57\x13\x2a\x1d\x7b\x82\x1e\x76\x1d\x60\x7c\x6c\xe4\x49\x52\x1d\x83\xe8\x00\x54\xbe\x73\xd6\x3d\xe6\x3a\xa6\x33\xb6\x2d\x6c\x7c\x4f\xe2\xfb\xd5\x9d\x5a\x77\xf4\x76\x95\xe1\xfa\xf1\xf1\xea\xde\x17\xf2\xaf\xae\xf1\x7d\x4c\xf7\x57\xfa\x5e\xd4\xf1\xc1\x7a\xdf\xc7\xfb\x0b\xaa\xfe\x01\xbb\xbf\x59\xed\x1f\x30\x76\xd7\x01\x92\xe4\xfb\x77\x80\x0f\xb0\xdd\xbf\x42\xfd\x93\xf7\xbb\x1a\xa7\x56\x83\x2c\xab\x41\xea\xf8\x73\x6b\x9e\x1a\xae\x2b\x9b\x28\x2a\xe5\x8d\x1c\x74\x08\xb2\x16\x7a\x45\xe0\xf7\xae\xb6\xc3\x69\x9b\xdd\xaf\x49\xae\x80\xc0\x08\x5c\x97\xf0\x1b\xd7\xa1\x8f\xd7\xe4\xfd\x20\x7c\x75\x45\xde\x67\xb9\xbf\x1e\xf7\x60\xfb\x0f\x56\xe3\x7d\xbe\x5f\x50\x8b\x07\xed\xfd\x66\x95\xb8\xd7\x4c\xab\xc3\x79\xfc\xfd\xcb\x70\xff\x7f\x9d\x7c\x69\x35\x72\x19\x5e\xc4\x9a\xfd\x9c\x5a\x80\x1e\xb7\x40\x22\x97\xd7\x56\xab\x81\xf9\x16\xf0\x8f\x8a\x63\xff\x3c\x55\x5a\x4e\x31\xe6\x64\xe6\x52\x80\xa6\xd8\xc0\x10\x66\xc8\x30\x77\xda\x1c\x4e\x55\x86\xcb\xbe\x01\x5c\xce\x40\x47\x66\x5d\xe6\x66\xd6\xb8\x1c\x33\x6b\x73\xf9\xe6\x22\x0b\x30\x10\x1b\xb0\xc6\xfc\x1b\x74\x71\x7a\xe1\x6f\x2b\x7d\x4f\xad\x92\xd8\xcb\x25\x9d\x59\x9a\xfd\x9c\x86\x80\x05\x80\x18\x00\x29\x5c\xd8\x01\x8b\xb8\x3c\xa7\x06\x16\x00\xbe\x84\xd3\x32\xd3\xb9\x3d\x37\x70\x32\x00\x65\x00\x39\x99\x82\x78\x73\x03\x73\x2a\xf3\x87\x37\x60\x15\x40\x35\x36\x80\x66\x5e\xe8\x1a\xc0\x10\xbc\xca\xc6\xee\x08\xb5\x82\x6e\xb9\x75\x00\xc0\x01\x00\x2f\x00\x13\xf4\x06\x44\xc0\x76\x80\xd8\xe0\x87\x42\x81\xc7\xca\x3a\x0b\x00\x20\xa7\xba\xab\xf4\xc4\x07\xc4\xa1\x7b\x02\x4a\xb1\x9f\x75\xc0\x53\x40\x06\xc0\x02\x6c\x0d\xe0\x53\xa6\xc0\x16\x36\x2f\x0c\x74\x82\x37\x31\xac\x4b\x9d\x22\x98\x2c\xe6\x36\x71\x10\x1b\x00\x24\x6c\x09\x60\x2a\xbe\x20\x06\x85\xc6\x1a\xbb\x83\x8f\x2a\x05\x7f\x83\x2e\xf2\x7d\x66\x20\x17\xc0\x05\x60\x09\xba\xa7\x06\xea\x92\x47\xf8\x0a\x60\x8c\xae\x0b\x48\x09\x78\x0a\x3d\xc0\x15\xe0\x50\x65\x60\x27\xfa\xb1\x0f\x99\xa9\xe9\x92\x59\x7e\x06\xd0\xb5\x56\xb9\x4c\x71\xad\x01\xdf\x00\xb2\xd0\x32\xd1\xe0\x67\xf2\x89\x49\xaa\x32\x20\x91\x78\x00\xe6\x01\xb6\xa0\x77\x6a\x77\x1b\xf4\x02\xd8\x03\x5c\xaa\x8d\x97\x33\x60\x2a\x80\x63\xa5\x82\x48\xe4\x18\xfb\x00\x8a\x4a\x03\xb9\x38\x7d\xb0\x07\xa0\x9b\xfd\x01\xc4\x73\x9a\xab\xc4\x0a\x3f\xb0\xa7\xb4\xce\x4f\x8e\x05\xa0\x68\xa6\x77\x4f\x74\x72\xa5\x01\xdf\x4e\xeb\x14\xd9\x89\xe9\xc3\xbd\x8b\x1c\x89\x0d\x0c\x03\x9c\xc3\x37\x01\x64\x37\xf0\x18\x70\x09\x59\xe8\xe2\x0c\xd0\x6b\xec\xae\x9b\x65\x1a\x3b\xe2\x16\x40\xd4\x5a\xe3\xcb\x04\xb9\xb3\x27\xd4\x43\xab\x27\x55\xc8\x41\xa7\x7e\xa7\x36\x00\xe1\x00\xb5\xf0\x1f\xb5\x15\x7c\xeb\x35\x87\xf0\x1b\x35\x01\x2d\x20\x6a\x6b\xc0\xeb\x87\x27\x1b\xf5\x4a\xbc\x83\x9d\x8d\xd6\x6c\xb8\x77\x3e\x78\xb2\x1d\xec\x6b\x5f\x7d\xc0\x1d\xe4\xbc\xff\x9c\x3b\xfc\x7f\xd3\x0f\x1e\x77\x07\xa5\x7c\xf6\xa9\xf7\xbf\x00\x00\x00\xff\xff\x5e\xab\x5f\x3a\x00\x20\x00\x00")
|
|
|
|
func dbMigrationsAssetsGoBytes() ([]byte, error) {
|
|
return bindataRead(
|
|
_dbMigrationsAssetsGo,
|
|
"db/migrations/assets.go",
|
|
)
|
|
}
|
|
|
|
func dbMigrationsAssetsGo() (*asset, error) {
|
|
bytes, err := dbMigrationsAssetsGoBytes()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
info := bindataFileInfo{name: "db/migrations/assets.go", size: 20480, mode: os.FileMode(420), modTime: time.Unix(1, 0)}
|
|
a := &asset{bytes: bytes, info: info}
|
|
return a, nil
|
|
}
|
|
|
|
// Asset loads and returns the asset for the given name.
|
|
// It returns an error if the asset could not be found or
|
|
// could not be loaded.
|
|
func Asset(name string) ([]byte, error) {
|
|
cannonicalName := strings.Replace(name, "\\", "/", -1)
|
|
if f, ok := _bindata[cannonicalName]; ok {
|
|
a, err := f()
|
|
if err != nil {
|
|
return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err)
|
|
}
|
|
return a.bytes, nil
|
|
}
|
|
return nil, fmt.Errorf("Asset %s not found", name)
|
|
}
|
|
|
|
// MustAsset is like Asset but panics when Asset would return an error.
|
|
// It simplifies safe initialization of global variables.
|
|
func MustAsset(name string) []byte {
|
|
a, err := Asset(name)
|
|
if err != nil {
|
|
panic("asset: Asset(" + name + "): " + err.Error())
|
|
}
|
|
|
|
return a
|
|
}
|
|
|
|
// AssetInfo loads and returns the asset info for the given name.
|
|
// It returns an error if the asset could not be found or
|
|
// could not be loaded.
|
|
func AssetInfo(name string) (os.FileInfo, error) {
|
|
cannonicalName := strings.Replace(name, "\\", "/", -1)
|
|
if f, ok := _bindata[cannonicalName]; ok {
|
|
a, err := f()
|
|
if err != nil {
|
|
return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err)
|
|
}
|
|
return a.info, nil
|
|
}
|
|
return nil, fmt.Errorf("AssetInfo %s not found", name)
|
|
}
|
|
|
|
// AssetNames returns the names of the assets.
|
|
func AssetNames() []string {
|
|
names := make([]string, 0, len(_bindata))
|
|
for name := range _bindata {
|
|
names = append(names, name)
|
|
}
|
|
return names
|
|
}
|
|
|
|
// _bindata is a table, holding each asset generator, mapped to its name.
|
|
var _bindata = map[string]func() (*asset, error){
|
|
"db/migrations/0001_initial_migration.sql": dbMigrations0001_initial_migrationSql,
|
|
"db/migrations/0002_dex_admin.sql": dbMigrations0002_dex_adminSql,
|
|
"db/migrations/0003_user_created_at.sql": dbMigrations0003_user_created_atSql,
|
|
"db/migrations/0004_session_nonce.sql": dbMigrations0004_session_nonceSql,
|
|
"db/migrations/0005_refresh_token_create.sql": dbMigrations0005_refresh_token_createSql,
|
|
"db/migrations/0006_user_email_unique.sql": dbMigrations0006_user_email_uniqueSql,
|
|
"db/migrations/0007_session_scope.sql": dbMigrations0007_session_scopeSql,
|
|
"db/migrations/0008_users_active_or_inactive.sql": dbMigrations0008_users_active_or_inactiveSql,
|
|
"db/migrations/assets.go": dbMigrationsAssetsGo,
|
|
}
|
|
|
|
// AssetDir returns the file names below a certain
|
|
// directory embedded in the file by go-bindata.
|
|
// For example if you run go-bindata on data/... and data contains the
|
|
// following hierarchy:
|
|
// data/
|
|
// foo.txt
|
|
// img/
|
|
// a.png
|
|
// b.png
|
|
// then AssetDir("data") would return []string{"foo.txt", "img"}
|
|
// AssetDir("data/img") would return []string{"a.png", "b.png"}
|
|
// AssetDir("foo.txt") and AssetDir("notexist") would return an error
|
|
// AssetDir("") will return []string{"data"}.
|
|
func AssetDir(name string) ([]string, error) {
|
|
node := _bintree
|
|
if len(name) != 0 {
|
|
cannonicalName := strings.Replace(name, "\\", "/", -1)
|
|
pathList := strings.Split(cannonicalName, "/")
|
|
for _, p := range pathList {
|
|
node = node.Children[p]
|
|
if node == nil {
|
|
return nil, fmt.Errorf("Asset %s not found", name)
|
|
}
|
|
}
|
|
}
|
|
if node.Func != nil {
|
|
return nil, fmt.Errorf("Asset %s not found", name)
|
|
}
|
|
rv := make([]string, 0, len(node.Children))
|
|
for childName := range node.Children {
|
|
rv = append(rv, childName)
|
|
}
|
|
return rv, nil
|
|
}
|
|
|
|
type bintree struct {
|
|
Func func() (*asset, error)
|
|
Children map[string]*bintree
|
|
}
|
|
|
|
var _bintree = &bintree{nil, map[string]*bintree{
|
|
"db": &bintree{nil, map[string]*bintree{
|
|
"migrations": &bintree{nil, map[string]*bintree{
|
|
"0001_initial_migration.sql": &bintree{dbMigrations0001_initial_migrationSql, map[string]*bintree{}},
|
|
"0002_dex_admin.sql": &bintree{dbMigrations0002_dex_adminSql, map[string]*bintree{}},
|
|
"0003_user_created_at.sql": &bintree{dbMigrations0003_user_created_atSql, map[string]*bintree{}},
|
|
"0004_session_nonce.sql": &bintree{dbMigrations0004_session_nonceSql, map[string]*bintree{}},
|
|
"0005_refresh_token_create.sql": &bintree{dbMigrations0005_refresh_token_createSql, map[string]*bintree{}},
|
|
"0006_user_email_unique.sql": &bintree{dbMigrations0006_user_email_uniqueSql, map[string]*bintree{}},
|
|
"0007_session_scope.sql": &bintree{dbMigrations0007_session_scopeSql, map[string]*bintree{}},
|
|
"0008_users_active_or_inactive.sql": &bintree{dbMigrations0008_users_active_or_inactiveSql, map[string]*bintree{}},
|
|
"assets.go": &bintree{dbMigrationsAssetsGo, map[string]*bintree{}},
|
|
}},
|
|
}},
|
|
}}
|
|
|
|
// RestoreAsset restores an asset under the given directory
|
|
func RestoreAsset(dir, name string) error {
|
|
data, err := Asset(name)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
info, err := AssetInfo(name)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// RestoreAssets restores an asset under the given directory recursively
|
|
func RestoreAssets(dir, name string) error {
|
|
children, err := AssetDir(name)
|
|
// File
|
|
if err != nil {
|
|
return RestoreAsset(dir, name)
|
|
}
|
|
// Dir
|
|
for _, child := range children {
|
|
err = RestoreAssets(dir, filepath.Join(name, child))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func _filePath(dir, name string) string {
|
|
cannonicalName := strings.Replace(name, "\\", "/", -1)
|
|
return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
|
|
}
|