mtdb

package module
v1.1.7 Latest Latest
Warning

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

Go to latest
Published: May 12, 2022 License: MIT Imports: 6 Imported by: 0

README

Minetest database repositories for the golang ecosystem

Coverage Status

Docs: https://pkg.go.dev/github.com/minetest-go/mtdb

Features

  • Read and write users/privs from and to the auth database
  • Read and write from and to the map database

Supported databases:

  • Sqlite3
  • Postgres

Usage

Read from an existing auth.sqlite database:

import (
    "database/sql"
    _ "modernc.org/sqlite"
    "github/minetest-go/mtdb"
)

func main() {
    auth_db, err := sql.Open("sqlite", "file:auth.sqlite")
    if err != nil {
        panic(err)
    }

    // Enable the wal mode for concurrent access
    err = mtdb.EnableWAL(auth_db)
    if err != nil {
        panic(err)
    }

    auth_repo := mtdb.NewAuthRepository(auth_db, mtdb.DATABASE_SQLITE)
    priv_repo := mtdb.NewPrivilegeRepository(auth_db, mtdb.DATABASE_SQLITE)

    // Read a user
    admin_user, err := auth_repo.GetByUsername("admin")
    if err != nil {
        panic(err)
    }

    fmt.Printf("User: %s, Last-login: %d\n", admin_user.Name, admin_user.LastLogin)

    // read privileges
    admin_privs, err := priv_repo.GetByID(*admin_user.ID)
    for _, priv := range admin_privs {
        fmt.Printf("+ Priv: %s\n", priv.Privilege)
    }
}

License

Code: MIT

Documentation

Index

Constants

View Source
const (
	MinPlainCoord = -34351347711
)

https://bitbucket.org/s_l_teichmann/mtsatellite/src/e1bf980a2b278c570b3f44f9452c9c087558acb3/common/coords.go?at=default&fileviewer=file-view-default

Variables

This section is empty.

Functions

func CoordToPlain added in v1.1.2

func CoordToPlain(x, y, z int) int64

func EnableWAL

func EnableWAL(db *sql.DB) error

func MigrateAuthDB added in v1.1.1

func MigrateAuthDB(db *sql.DB, dbtype DatabaseType) error

func MigrateBlockDB added in v1.1.2

func MigrateBlockDB(db *sql.DB, dbtype DatabaseType) error

func PlainToCoord added in v1.1.2

func PlainToCoord(i int64) (x, y, z int)

Types

type AuthEntry

type AuthEntry struct {
	ID        *int64 `json:"id"`
	Name      string `json:"name"`
	Password  string `json:"password"`
	LastLogin int    `json:"last_login"`
}

type AuthRepository added in v1.1.1

type AuthRepository interface {
	GetByUsername(username string) (*AuthEntry, error)
	Create(entry *AuthEntry) error
	Update(entry *AuthEntry) error
	Delete(id int64) error
}

func NewAuthRepository

func NewAuthRepository(db *sql.DB, dbtype DatabaseType) AuthRepository

type Block added in v1.1.2

type Block struct {
	PosX int
	PosY int
	PosZ int
	Data []byte
}

type BlockRepository added in v1.1.2

type BlockRepository interface {
	GetByPos(x, y, z int) (*Block, error)
	Update(block *Block) error
	Delete(x, y, z int) error
}

func NewBlockRepository added in v1.1.2

func NewBlockRepository(db *sql.DB, dbtype DatabaseType) BlockRepository

type DatabaseType

type DatabaseType string
const (
	DATABASE_SQLITE   DatabaseType = "sqlite"
	DATABASE_POSTGRES DatabaseType = "postgres"
)

type PrivRepository added in v1.1.1

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

func NewPrivilegeRepository

func NewPrivilegeRepository(db *sql.DB, dbtype DatabaseType) *PrivRepository

func (*PrivRepository) Create added in v1.1.1

func (repo *PrivRepository) Create(entry *PrivilegeEntry) error

func (*PrivRepository) Delete added in v1.1.1

func (repo *PrivRepository) Delete(id int64, privilege string) error

func (*PrivRepository) GetByID added in v1.1.1

func (repo *PrivRepository) GetByID(id int64) ([]*PrivilegeEntry, error)

type PrivilegeEntry

type PrivilegeEntry struct {
	ID        int64  `json:"id"`
	Privilege string `json:"privilege"`
}

Jump to

Keyboard shortcuts

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