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  }