Skip to content

gouniverse/metastore

Repository files navigation

Meta Store Open in Gitpod

Tests Status Go Report Card PkgGoDev

Meta stores meta information for any object to a database table.

Store to database additional information to anything using metas (key - value) pairs

Installation

go get -u github.com/gouniverse/metastore

Table Schema

The following schema is used for the database.

meta
id String, UniqueId
object_type String (100)
object_id String (40)
meta_key String (255)
meta_value Long Text
created_at DateTime
updated_at DateTime
deleted_at DateTime

Setup

metaStore, err := metastore.NewStore(metastore.NewStoreOptions{
	DB:                 databaseInstance,
	MetaTableName:      "my_meta",
	AutomigrateEnabled: true,
	DebugEnabled:       false,
})

if err != nil {
    t.Fatal("Error at AutoMigrate", err.Error())
}

Usage

  • Set a meta values (for user with ID 1)
metaStore.Set("user", "1", "verified", "yes")
metaStore.Set("user", "1", "verified_at", "2021-03-12")
  • Get meta values (for user with ID 1), if not found a default value is returned
log.Println(metaStore.Get("user", "1", "verified", ""))
log.Println(metaStore.Get("user", "1", "verified_at", ""))

Changelog

2022.12.07 - Changed setup to use struct

2022.12.07 - Updated dependencies, fixed package name

2022.01.02 - Removed GORM dependency

2021.12.29 - Added tests badge

2021.12.29 - Added tests