storage

package
v0.1.43 Latest Latest
Warning

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

Go to latest
Published: Dec 15, 2022 License: GPL-3.0 Imports: 9 Imported by: 0

Documentation

Index

Examples

Constants

View Source
const CidBufferSize = 64

Variables

This section is empty.

Functions

This section is empty.

Types

type Content added in v0.1.24

type Content struct {
	Id uint32
}
Example
package main

import (
	"fmt"
	"io"

	symbols "bitbucket.org/taubyte/go-sdk-symbols/storage"
	"bitbucket.org/taubyte/go-sdk/storage"
)

func main() {
	// Mocking the calls to the vm for usage in tests and playground
	symbols.ContentMockData{Id: 2}.Mock()

	content, err := storage.Create()
	if err != nil {
		return
	}

	_, err = content.Write([]byte("Hello World!"))
	if err != nil {
		return
	}

	_, err = content.Seek(0, 0)
	if err != nil {
		return
	}

	cid, err := content.Push()
	if err != nil {
		return
	}

	newContent, err := storage.Open(cid)
	if err != nil {
		return
	}

	data, err := io.ReadAll(newContent)
	if err != nil {
		return
	}

	err = newContent.Close()
	if err != nil {
		return
	}

	newCid, err := newContent.Cid()
	if err != nil || cid != newCid {
		return
	}

	fmt.Println(string(data))
}
Output:

Hello World!

func (*Content) Cid added in v0.1.24

func (c *Content) Cid() (cid.Cid, error)

Cid returns the cid of the file and an error.

func (*Content) Close added in v0.1.24

func (c *Content) Close() error

Close closes the file associated with the content. Returns an error.

func (*Content) Push added in v0.1.24

func (c *Content) Push() (cid.Cid, error)

Push adds the file into the network. Updates the cid of the file. Returns cid and an error

func (*Content) Read added in v0.1.24

func (c *Content) Read(p []byte) (int, error)

Read reads up to len p in the file. Returns how much was read and an error.

func (*Content) Seek added in v0.1.24

func (c *Content) Seek(offset int64, whence int) (int64, error)

Seek moves to a position inside the file. Offset is how much to move the current position Whence has three options: 0 = SeekStart, 1 = SeekCurrent, or 2 = SeekEnd Combines both offset and whence to find a new offset inside the file Returns the new offset and an error

func (*Content) Write added in v0.1.24

func (c *Content) Write(p []byte) (int, error)

Write writes the passed in data into the file. Returns how much was written and an error.

type DefaultFile

type DefaultFile interface {
	Add(data []byte, overWrite bool) (int, error)
	GetFile() (file *StorageFile, err error)
	Delete() error
	DeleteAllVersions() error
	CurrentVersion() (int, error)
	Versions() ([]string, error)
}

type File

type File struct {
	// contains filtered or unexported fields
}

func (*File) Add added in v0.1.20

func (f *File) Add(data []byte, overWrite bool) (int, error)

Add uses the data and overwrite given and adds the file to the storage. If overwrite is set to true then the current version number is not updated, and the data for the current version is updated. If overwrite is set to false, then for versioning enabled storages a new version is created For versioning disabled storages, file is only added if there is no file with the same name in the current storage. Returns the current version of the file.

Example
package main

import (
	"fmt"

	symbols "bitbucket.org/taubyte/go-sdk-symbols/storage"
	"bitbucket.org/taubyte/go-sdk/storage"
)

func main() {
	// Mocking the calls to the vm for usage in tests and playground
	symbols.FileMockData{
		StorageId:   5,
		StorageName: "testStorage",
		FileName:    "testFile",
		Version:     2,
		Data:        []byte("Hello World"),
	}.Mock()

	db, err := storage.New("testStorage")
	if err != nil {
		return
	}

	file := db.File("testFile")
	version, err := file.Add([]byte("Hello World"), true)
	if err != nil {
		return
	}

	fmt.Println(version)
}
Output:

3

func (*File) CurrentVersion added in v0.1.20

func (f *File) CurrentVersion() (int, error)

Current version looks up in the storage the latest version that is stored for that specific file. Returns the latest version for the file, if found, and an error.

Example
package main

import (
	"fmt"

	symbols "bitbucket.org/taubyte/go-sdk-symbols/storage"
	"bitbucket.org/taubyte/go-sdk/storage"
)

func main() {
	// Mocking the calls to the vm for usage in tests and playground
	symbols.FileMockData{
		StorageId:   5,
		StorageName: "testStorage",
		FileName:    "testFile",
		Version:     2,
	}.Mock()

	db, err := storage.New("testStorage")
	if err != nil {
		return
	}

	file := db.File("testFile")
	version, err := file.CurrentVersion()
	if err != nil {
		return
	}

	fmt.Println(version)
}
Output:

2

func (*File) Delete added in v0.1.20

func (f *File) Delete() error

Delete uses the current file structure and the given version to delete the specific version of a file from the storage. Returns an error

Example
package main

import (
	"fmt"

	"bitbucket.org/taubyte/go-sdk/storage"
)

func main() {
	// Mocking the calls to the vm for usage in tests and playground
	db, err := storage.New("testStorage")
	if err != nil {
		return
	}

	file := db.File("testFile")
	err = file.Delete()
	if err != nil {
		return
	}

	fmt.Println("Success")
}
Output:

Success

func (*File) DeleteAllVersions

func (f *File) DeleteAllVersions() error

DeleteAllVersions uses the current file and deletes all version of it in the storage. Returns an error

Example
package main

import (
	"fmt"

	"bitbucket.org/taubyte/go-sdk/storage"
)

func main() {
	db, err := storage.New("testStorage")
	if err != nil {
		return
	}

	file := db.File("testFile")
	err = file.DeleteAllVersions()
	if err != nil {
		return
	}

	fmt.Println("Success")
}
Output:

Success

func (*File) GetFile

func (f *File) GetFile() (*StorageFile, error)

GetFile grabs the the file from the storage Returns the file and an error

Example
package main

import (
	"fmt"

	symbols "bitbucket.org/taubyte/go-sdk-symbols/storage"
	"bitbucket.org/taubyte/go-sdk/storage"
)

func main() {
	// Mocking the calls to the vm for usage in tests and playground
	symbols.FileMockData{
		StorageId:   5,
		StorageName: "testStorage",
		Id:          10,
		FileName:    "testFile",
		FileId:      25,
	}.Mock()

	db, err := storage.New("testStorage")
	if err != nil {
		return
	}

	file := db.File("testFile")

	_, err = file.GetFile()
	if err != nil {
		return
	}

	fmt.Println("Success")
}
Output:

Success

func (*File) Version

func (f *File) Version(version uint32) *VersionedFile

Version uses current file and given versions to create a new instance of VersionedFile Returns the created VersionedFile structure.

Example
package main

import (
	"fmt"

	symbols "bitbucket.org/taubyte/go-sdk-symbols/storage"
	"bitbucket.org/taubyte/go-sdk/storage"
)

func main() {
	// Mocking the calls to the vm for usage in tests and playground
	symbols.FileMockData{
		StorageId:   5,
		StorageName: "testStorage",
		Id:          10,
		FileName:    "testFile",
		FileId:      25,
	}.Mock()

	db, err := storage.New("testStorage")
	if err != nil {
		return
	}

	file := db.File("testFile")
	versionedFile := file.Version(12)

	if versionedFile == nil {
		return
	}

	fmt.Println("Success")
}
Output:

Success

func (*File) Versions added in v0.1.20

func (f *File) Versions() ([]string, error)

ListVersions uses the current file and looks up all version of the file. Returns []string of all the versions and an error

Example
package main

import (
	"fmt"

	symbols "bitbucket.org/taubyte/go-sdk-symbols/storage"
	"bitbucket.org/taubyte/go-sdk/storage"
)

func main() {
	// Mocking the calls to the vm for usage in tests and playground
	symbols.FileMockData{
		StorageId:   5,
		StorageName: "testStorage",
		FileName:    "testFile",
		Versions:    map[string][]string{"testFile": {"1", "2", "3"}},
	}.Mock()

	db, err := storage.New("testStorage")
	if err != nil {
		return
	}

	file := db.File("testFile")
	versions, err := file.Versions()
	if err != nil {
		return
	}

	fmt.Println(versions)
}
Output:

[1 2 3]

type ReadOnlyContent added in v0.1.35

type ReadOnlyContent interface {
	io.ReadSeekCloser
	Cid() (cid.Cid, error)
}

func Open added in v0.1.24

func Open(_cid cid.Cid) (ReadOnlyContent, error)

Open creates a new content using the cid given as the file. Returns a new content.

Example
// Mocking the calls to the vm for usage in tests and playground
symbols.MockOpen(11, "QmQUXYRNqU2U351aE8mrPFAyqXtKupF9bDspXKLsdkTLGn")

testCid, err := cid.Parse("QmQUXYRNqU2U351aE8mrPFAyqXtKupF9bDspXKLsdkTLGn")
if err != nil {
	return
}

content, err := storage.Open(testCid)
if err != nil {
	return
}

fmt.Println(content)
Output:

&{11}

type ReadWriteContent added in v0.1.35

type ReadWriteContent interface {
	io.ReadWriteSeeker
	io.Closer
	Push() (cid.Cid, error)
}

func Create added in v0.1.24

func Create() (ReadWriteContent, error)

Create creates and returns the new content.

Example
package main

import (
	"fmt"

	symbols "bitbucket.org/taubyte/go-sdk-symbols/storage"
	"bitbucket.org/taubyte/go-sdk/storage"
)

func main() {
	// Mocking the calls to the vm for usage in tests and playground
	symbols.MockCreate(10)

	content, err := storage.Create()
	if err != nil {
		return
	}

	fmt.Println(content)
}
Output:

&{10}

type Storage

type Storage uint32

func Get

func Get(storageName string) (Storage, error)

Get returns the storage with given name. Returns the storage if it exists and an error.

Example
package main

import (
	"fmt"

	symbols "bitbucket.org/taubyte/go-sdk-symbols/storage"
	"bitbucket.org/taubyte/go-sdk/storage"
)

func main() {
	// Mocking the calls to the vm for usage in tests and playground
	symbols.MockGet(map[string]uint32{"exampleStorage": 16}, 16)

	db, err := storage.Get("exampleStorage")
	if err != nil {
		return
	}

	fmt.Println(db)
}
Output:

16

func New

func New(storageName string) (Storage, error)

New creates a new storage Returns a storage and an error

Example
package main

import (
	"fmt"

	symbols "bitbucket.org/taubyte/go-sdk-symbols/storage"
	"bitbucket.org/taubyte/go-sdk/storage"
)

func main() {
	// Mocking the calls to the vm for usage in tests and playground
	symbols.MockNew(32, "exampleStorage")

	db, err := storage.New("exampleStorage")
	if err != nil {
		return
	}

	fmt.Println(db)
}
Output:

32

func (Storage) Cid added in v0.1.20

func (s Storage) Cid(fileName string) (string, error)

Cid looks up the given filename in the given storage. Returns the cid corresponding to the file if found and an error.

Example
package main

import (
	"fmt"

	symbols "bitbucket.org/taubyte/go-sdk-symbols/storage"
	"bitbucket.org/taubyte/go-sdk/storage"
)

func main() {
	// Mocking the calls to the vm for usage in tests and playground
	symbols.StorageMockData{
		StorageId:   2,
		StorageName: "testStorage",
		FileId:      15,
		FileName:    "testFile",
		Cid:         "bafybeiavzbz2ugyergky6plyluts2evta5hu6ehhicmuow4zm6vd42pugq",
	}.Mock()

	db, err := storage.New("testStorage")
	if err != nil {
		return
	}

	cid, err := db.Cid("testFile")
	if err != nil {
		return
	}

	fmt.Println(cid)

}
Output:

bafybeiavzbz2ugyergky6plyluts2evta5hu6ehhicmuow4zm6vd42pugq

func (Storage) File

func (s Storage) File(fileName string) *File

File uses the name passed in and creates a new instance of File that holds the storage and filename. Returns the File structure.

Example
package main

import (
	"fmt"

	symbols "bitbucket.org/taubyte/go-sdk-symbols/storage"
	"bitbucket.org/taubyte/go-sdk/storage"
)

func main() {
	// Mocking the calls to the vm for usage in tests and playground
	symbols.StorageMockData{
		StorageId:   2,
		StorageName: "testStorage",
	}.Mock()
	db, err := storage.New("testStorage")
	if err != nil {
		return
	}

	file := db.File("testFile")

	fmt.Println(file)
}
Output:

&{2 testFile 0}

func (Storage) ListFiles added in v0.1.20

func (s Storage) ListFiles() ([]File, error)

ListFiles looks up all saved files in the given storage. Returns an array of all Files found in the storage and an error.

Example
package main

import (
	"fmt"

	symbols "bitbucket.org/taubyte/go-sdk-symbols/storage"
	"bitbucket.org/taubyte/go-sdk/storage"
)

func main() {
	// Mocking the calls to the vm for usage in tests and playground
	symbols.StorageMockData{
		StorageId:   2,
		StorageName: "testStorage",
		Files:       "file/testFile1/1/file/testFile2/2",
	}.Mock()

	db, err := storage.New("testStorage")
	if err != nil {
		return
	}

	files, err := db.ListFiles()
	if err != nil {
		return
	}

	fmt.Println(files)
}
Output:

[{2 testFile1 1} {2 testFile2 2}]

func (Storage) RemainingCapacity

func (s Storage) RemainingCapacity() (int, error)

Remaining capacity loops through to given storage and calculates how much space left is available. Returns the remaining space available and an error.

Example
package main

import (
	"fmt"

	symbols "bitbucket.org/taubyte/go-sdk-symbols/storage"
	"bitbucket.org/taubyte/go-sdk/storage"
)

func main() {
	// Mocking the calls to the vm for usage in tests and playground
	symbols.StorageMockData{
		StorageId:   2,
		StorageName: "testStorage",
		Used:        25,
		Capacity:    100,
	}.Mock()

	db, err := storage.New("testStorage")
	if err != nil {
		return
	}

	remaining, err := db.RemainingCapacity()
	if err != nil {
		return
	}

	fmt.Println(remaining)
}
Output:

75

type StorageFile

type StorageFile struct {
	// contains filtered or unexported fields
}

func (*StorageFile) Close

func (file *StorageFile) Close() error

Close closes the current file Returns an error

Example
package main

import (
	"fmt"

	symbols "bitbucket.org/taubyte/go-sdk-symbols/storage"
	"bitbucket.org/taubyte/go-sdk/storage"
)

func main() {
	// Mocking the calls to the vm for usage in tests and playground
	symbols.StorageFileMockData{StorageId: 5,
		StorageName: "testStorage",
	}.Mock()

	db, err := storage.New("testStorage")
	if err != nil {
		return
	}

	file := db.File("testFile")
	dbFile, err := file.GetFile()
	if err != nil {
		return
	}

	err = dbFile.Close()
	if err != nil {
		return
	}

	fmt.Println("Success")
}
Output:

Success

func (*StorageFile) Read

func (file *StorageFile) Read(p []byte) (int, error)

Read reads the given bytes Returns an int of how much was read and an error

Example
package main

import (
	"fmt"

	symbols "bitbucket.org/taubyte/go-sdk-symbols/storage"
	"bitbucket.org/taubyte/go-sdk/storage"
)

func main() {
	// Mocking the calls to the vm for usage in tests and playground
	symbols.StorageFileMockData{
		StorageId:   5,
		StorageName: "testStorage",
		FileId:      10,
		Data:        []byte("Hello World"),
	}.Mock()

	db, err := storage.New("testStorage")
	if err != nil {
		return
	}

	file := db.File("testFile")
	dbFile, err := file.GetFile()
	if err != nil {
		return
	}

	p := make([]byte, len("Hello World"))
	read, err := dbFile.Read(p)
	if err != nil {
		return
	}

	fmt.Println(read)
}
Output:

11

type VersionedFile

type VersionedFile struct {
	DefaultFile
}

Jump to

Keyboard shortcuts

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