github.com/goravel/framework@v1.13.9/cache/application.go (about)

     1  package cache
     2  
     3  import (
     4  	"github.com/goravel/framework/contracts/cache"
     5  	"github.com/goravel/framework/contracts/config"
     6  	"github.com/goravel/framework/contracts/log"
     7  )
     8  
     9  type Application struct {
    10  	cache.Driver
    11  	config config.Config
    12  	driver Driver
    13  	log    log.Log
    14  	stores map[string]cache.Driver
    15  }
    16  
    17  func NewApplication(config config.Config, log log.Log, store string) (*Application, error) {
    18  	driver := NewDriverImpl(config)
    19  	instance, err := driver.New(store)
    20  	if err != nil {
    21  		return nil, err
    22  	}
    23  
    24  	return &Application{
    25  		Driver: instance,
    26  		config: config,
    27  		driver: driver,
    28  		log:    log,
    29  		stores: map[string]cache.Driver{
    30  			store: instance,
    31  		},
    32  	}, nil
    33  }
    34  
    35  func (app *Application) Store(name string) cache.Driver {
    36  	if driver, exist := app.stores[name]; exist {
    37  		return driver
    38  	}
    39  
    40  	instance, err := app.driver.New(name)
    41  	if err != nil {
    42  		app.log.Error(err)
    43  
    44  		return nil
    45  	}
    46  
    47  	app.stores[name] = instance
    48  
    49  	return instance
    50  }