github.com/hellofresh/janus@v0.0.0-20230925145208-ce8de8183c67/pkg/plugin/oauth2/in_memory_repository.go (about) 1 package oauth2 2 3 import ( 4 "sync" 5 ) 6 7 // InMemoryRepository represents a in memory repository 8 type InMemoryRepository struct { 9 sync.RWMutex 10 servers map[string]*OAuth 11 } 12 13 // NewInMemoryRepository creates a in memory repository 14 func NewInMemoryRepository() *InMemoryRepository { 15 return &InMemoryRepository{servers: make(map[string]*OAuth)} 16 } 17 18 // FindAll fetches all the OAuth Servers available 19 func (r *InMemoryRepository) FindAll() ([]*OAuth, error) { 20 r.RLock() 21 defer r.RUnlock() 22 23 var servers []*OAuth 24 for _, server := range r.servers { 25 servers = append(servers, server) 26 } 27 28 return servers, nil 29 } 30 31 // FindByName find an OAuth Server by name 32 func (r *InMemoryRepository) FindByName(name string) (*OAuth, error) { 33 r.RLock() 34 defer r.RUnlock() 35 36 return r.findByName(name) 37 } 38 39 // Add add a new OAuth Server to the repository 40 func (r *InMemoryRepository) Add(server *OAuth) error { 41 r.Lock() 42 defer r.Unlock() 43 44 if _, ok := r.servers[server.Name]; ok { 45 return ErrOauthServerNameExists 46 } 47 48 r.servers[server.Name] = server 49 50 return nil 51 } 52 53 // Save saves a OAuth Server to the repository 54 func (r *InMemoryRepository) Save(server *OAuth) error { 55 r.Lock() 56 defer r.Unlock() 57 58 r.servers[server.Name] = server 59 60 return nil 61 } 62 63 // Remove removes an OAuth Server from the repository 64 func (r *InMemoryRepository) Remove(name string) error { 65 r.Lock() 66 defer r.Unlock() 67 68 if _, err := r.findByName(name); err != nil { 69 return err 70 } 71 72 delete(r.servers, name) 73 74 return nil 75 } 76 77 func (r *InMemoryRepository) findByName(name string) (*OAuth, error) { 78 server, ok := r.servers[name] 79 if false == ok { 80 return nil, ErrOauthServerNotFound 81 } 82 83 return server, nil 84 }