dead simple, tiny but powerful Go ORM
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Vivom Build Status

dead simple, tiny, but powerful Go ORM library


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) Table() string {
	return "subscribers"

func (s *Subscriber) Columns() []string {
	return []string{"id", "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 ""

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

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

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

You can also insert new records to the database

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

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

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



The MIT License (MIT)