godoc_vfs

package
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 22, 2022 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package godoc_vfs contains a driver that reads migrations from a virtual file system.

Implementations of the filesystem interface that read from zip files and maps, as well as the definition of the filesystem interface can be found in the golang.org/x/tools/godoc/vfs package.

Example (Mapfs)
package main

import (
	"github.com/sujit-baniya/migrate"
	"github.com/sujit-baniya/migrate/source/godoc_vfs"
	"golang.org/x/tools/godoc/vfs/mapfs"
)

func main() {
	fs := mapfs.New(map[string]string{
		"1_foobar.up.sql":   "1 up",
		"1_foobar.down.sql": "1 down",
		"3_foobar.up.sql":   "3 up",
		"4_foobar.up.sql":   "4 up",
		"4_foobar.down.sql": "4 down",
		"5_foobar.down.sql": "5 down",
		"7_foobar.up.sql":   "7 up",
		"7_foobar.down.sql": "7 down",
	})

	d, err := godoc_vfs.WithInstance(fs, "")
	if err != nil {
		panic("bad migrations found!")
	}
	m, err := migrate.NewWithSourceInstance("godoc-vfs", d, "database://foobar")
	if err != nil {
		panic("error creating the migrations")
	}
	err = m.Up()
	if err != nil {
		panic("up failed")
	}
}
Output:

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func WithInstance

func WithInstance(fs vfs.FileSystem, searchPath string) (source.Driver, error)

WithInstance creates a new driver from a virtual file system. If a tree named searchPath exists in the virtual filesystem, WithInstance searches for migration files there. It defaults to "/".

Types

type VFS

type VFS struct {
	httpfs.PartialDriver
	// contains filtered or unexported fields
}

VFS is an implementation of driver that returns migrations from a virtual file system.

func (*VFS) Open

func (b *VFS) Open(url string) (source.Driver, error)

Open implements the source.Driver interface for VFS.

Calling this function panics, instead use the WithInstance function. See the package level documentation for an example.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL