yanic/docs/dev_database.md

1.5 KiB

Add new database type

Write a new package to implement the interface database.Connection:

type Connection interface {
	InsertNode(node *runtime.Node)

	InsertLink(*runtime.Link, time.Time)

	InsertGlobals(*runtime.GlobalStats, time.Time, string)

	PruneNodes(deleteAfter time.Duration)

	Close()
}

InsertNode is stores statistics per node

InsertLink is stores statistics per link

InsertGlobals is stores global statistics (by site_code, and "global" like in runtime.GLOBAL_SITE overall sites).

PruneNodes is prunes historical per-node data

Close is called during shutdown of Yanic.

For startup, you need to bind your database type by calling database.RegisterAdapter("typeofdatabase",ConnectFunction)

it should be in the func init() {} of your package.

The typeofdatabase is used as mapping in the configuration [[database.connection.typeofdatabase]] the map[string]interface{} of the content are parsed to the ConnectFunction and on of your implemented Connection or a error is needed as result.

Short: the function signature of ConnectFunction should be func Connect(configuration interface{}) (Connection, error)

At last add you import string to compile the your database as well in this all package.

TIP: take a look in the easy database type logging.