package
1.10.0
Repository: https://github.com/lancer-kit/armory.git
Documentation: pkg.go.dev

# README

GoDoc

initialization

Is a package for initialization of the application modules. Ex. database connectors, service providers, etc.

Usage

package main

import (
	"errors"
	"log"
	"time"

	"github.com/lancer-kit/armory/initialization"
	"github.com/sirupsen/logrus"
)

func main() {
	moduleList := initialization.Modules{
		initialization.Module{
			Name:         "database_conn",
			DependsOn:    "",
			Timeout:      15 * time.Second,
			InitInterval: time.Second,
			Init: func(entry *logrus.Entry) error {
				entry.WithField("module", "database_conn").
					Info("try to initialize module")
				time.Sleep(500 * time.Millisecond)
				return errors.New("ha-ha-ha")
			},
		},

		initialization.Module{
			Name:         "rabbit",
			DependsOn:    "",
			Timeout:      15 * time.Second,
			InitInterval: time.Second,
			Init: func(entry *logrus.Entry) error {
				entry.WithField("module", "rabbit").
					Info("try to initialize module")
				time.Sleep(500 * time.Millisecond)
				return nil
			},
		},

		initialization.Module{
			Name:         "listener",
			DependsOn:    "database_conn",
			Timeout:      15 * time.Second,
			InitInterval: time.Second,
			Init: func(entry *logrus.Entry) error {
				entry.WithField("module", "listener").
					Info("try to initialize module")
				time.Sleep(500 * time.Millisecond)
				return nil
			},
		},
	}

	err := moduleList.InitAll()
	if err != nil {
		log.Fatal("Init failed with error: ", err.Error())
	}
}

# Structs

Module is unit for initialization.

# Type aliases

Modules is a set of modules for initialization.