github.com/l3x/learn-fp-go@v0.0.0-20171228022418-7639825d0b71/2-design-patterns/ch06-onion-arch/04_onion/src/infrastructure/localhandler.go (about) 1 package infrastructure 2 3 import ( 4 "interfaces" 5 "usecases" 6 . "utils" 7 "fmt" 8 "os" 9 ) 10 11 type LocalHandler struct {} 12 13 var LocalInteractor *usecases.LocalInteractor 14 15 func NewLocalHandler() *LocalHandler { 16 gcpHandler := new(LocalHandler) 17 return gcpHandler 18 } 19 20 func (handler *LocalHandler) FileExists(fileName string) (fileExists bool, err error) { 21 _, err = os.Stat(fmt.Sprintf("%s/%s", Config.DownloadDir, fileName)) 22 if !os.IsNotExist(err) { 23 fileExists = true 24 } 25 return 26 } 27 28 func GetLocalInteractor() (localInteractor *usecases.LocalInteractor, err error) { 29 if LocalInteractor == nil { 30 localHandler := NewLocalHandler() 31 localHandlers := make(map[string] interfaces.LocalHandler) 32 localHandlers["LocalFileSystemRepo"] = localHandler 33 localInteractor = new(usecases.LocalInteractor) 34 localInteractor.LocalRepository = interfaces.NewLocalRepo(localHandlers) 35 LocalInteractor = localInteractor 36 } 37 return LocalInteractor, nil 38 }