vivom

package module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Sep 18, 2013 License: MIT Imports: 2 Imported by: 0

README

Vivom

dead simple, tiny, but powerful Go ORM library

Usage

Implicitly implement the vivom's interfaces as necessary.

type Subscriber struct {
	ID        int
	Name      string
	Email     string
	DateAdded string
}

func (s *Subscriber) GetID() int {
	return s.ID
}

func (s *Subscriber) SetID(ID int) {
	s.ID = ID
}

func (s *Subscriber) Validate() error {
	if s.Name == "" {
		return errors.New("empty name")
	}

	if s.Email == "" {
		return errors.New("invalid email")
	}

	return nil
}

func (s *Subscriber) TableName() string {
	return "subscribers"
}

func (s *Subscriber) Columns() []string {
	return []string{"name", "email", "date_added"}
}

func (s *Subscriber) Values() []interface{} {
	return []interface{}{s.Name, s.Email, time.Now().Unix()}
}

func (s *Subscriber) ScanValues() []interface{} {
	return []interface{}{&s.ID, &s.Name, &s.Email, &t.DateAdded}
}

Import the vivom package

import "github.com/oguzbilgic/vivom"

Now access your records easily using vivom's db functions.

subscriber := &Subscriber{}
err := vivom.Select(subscriber, 23152, db)
if err != nil {
	panic(err)
}

fmt.Println("Subscriber #"+subscriber.ID+" is "+subscriber.Name)

You can also insert new records to the database

subscriber := &Subsriber{Name: "John Doe", Email: "foo@bar.com"}
err := vivom.Insert(subscriber, db)
if err != nil {
	panic(err)
}

fmt.Println("ID of the new subscriber is "+subscriber.ID)

For managing multiple database records, your struct should also implement vivom.TableRows interface.

Documentation

http://godoc.org/github.com/oguzbilgic/vivom

License

The MIT License (MIT)

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Insert

func Insert(r InsertableRow, db *sql.DB) error

func Select

func Select(r SelectableRow, id string, db *sql.DB) error

func SelectAll

func SelectAll(rs SelectableRows, db *sql.DB) error

func SelectAllBy

func SelectAllBy(rs SelectableRows, column string, value string, db *sql.DB) error

Types

type InsertableRow

type InsertableRow interface {
	Row

	GetID() int
	SetID(int)
	Validate() error
	Values() []interface{}
}

type Row

type Row interface {
	TableName() string
	Columns() []string
}

type SelectableRow

type SelectableRow interface {
	Row

	ScanValues() []interface{}
}

type SelectableRows

type SelectableRows interface {
	Row

	Next() SelectableRow
}

Jump to

Keyboard shortcuts

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