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 }