mirror of
https://github.com/usememos/memos.git
synced 2025-06-05 22:09:59 +02:00
20
store/idp.go
20
store/idp.go
@@ -102,7 +102,10 @@ func (s *Store) CreateIdentityProvider(ctx context.Context, create *IdentityProv
|
|||||||
if err := tx.Commit(); err != nil {
|
if err := tx.Commit(); err != nil {
|
||||||
return nil, FormatError(err)
|
return nil, FormatError(err)
|
||||||
}
|
}
|
||||||
return create, nil
|
|
||||||
|
identityProviderMessage := create
|
||||||
|
s.idpCache.Store(identityProviderMessage.ID, identityProviderMessage)
|
||||||
|
return identityProviderMessage, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Store) ListIdentityProviders(ctx context.Context, find *FindIdentityProviderMessage) ([]*IdentityProviderMessage, error) {
|
func (s *Store) ListIdentityProviders(ctx context.Context, find *FindIdentityProviderMessage) ([]*IdentityProviderMessage, error) {
|
||||||
@@ -117,10 +120,19 @@ func (s *Store) ListIdentityProviders(ctx context.Context, find *FindIdentityPro
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, item := range list {
|
||||||
|
s.idpCache.Store(item.ID, item)
|
||||||
|
}
|
||||||
return list, nil
|
return list, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Store) GetIdentityProvider(ctx context.Context, find *FindIdentityProviderMessage) (*IdentityProviderMessage, error) {
|
func (s *Store) GetIdentityProvider(ctx context.Context, find *FindIdentityProviderMessage) (*IdentityProviderMessage, error) {
|
||||||
|
if find.ID != nil {
|
||||||
|
if cache, ok := s.idpCache.Load(*find.ID); ok {
|
||||||
|
return cache.(*IdentityProviderMessage), nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
tx, err := s.db.BeginTx(ctx, nil)
|
tx, err := s.db.BeginTx(ctx, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, FormatError(err)
|
return nil, FormatError(err)
|
||||||
@@ -135,7 +147,9 @@ func (s *Store) GetIdentityProvider(ctx context.Context, find *FindIdentityProvi
|
|||||||
return nil, &common.Error{Code: common.NotFound, Err: fmt.Errorf("not found")}
|
return nil, &common.Error{Code: common.NotFound, Err: fmt.Errorf("not found")}
|
||||||
}
|
}
|
||||||
|
|
||||||
return list[0], nil
|
identityProviderMessage := list[0]
|
||||||
|
s.idpCache.Store(identityProviderMessage.ID, identityProviderMessage)
|
||||||
|
return identityProviderMessage, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Store) UpdateIdentityProvider(ctx context.Context, update *UpdateIdentityProviderMessage) (*IdentityProviderMessage, error) {
|
func (s *Store) UpdateIdentityProvider(ctx context.Context, update *UpdateIdentityProviderMessage) (*IdentityProviderMessage, error) {
|
||||||
@@ -195,6 +209,7 @@ func (s *Store) UpdateIdentityProvider(ctx context.Context, update *UpdateIdenti
|
|||||||
return nil, fmt.Errorf("unsupported idp type %s", string(identityProviderMessage.Type))
|
return nil, fmt.Errorf("unsupported idp type %s", string(identityProviderMessage.Type))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s.idpCache.Store(identityProviderMessage.ID, identityProviderMessage)
|
||||||
return &identityProviderMessage, nil
|
return &identityProviderMessage, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,6 +234,7 @@ func (s *Store) DeleteIdentityProvider(ctx context.Context, delete *DeleteIdenti
|
|||||||
if rows == 0 {
|
if rows == 0 {
|
||||||
return &common.Error{Code: common.NotFound, Err: fmt.Errorf("idp not found")}
|
return &common.Error{Code: common.NotFound, Err: fmt.Errorf("idp not found")}
|
||||||
}
|
}
|
||||||
|
s.idpCache.Delete(delete.ID)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -17,6 +17,7 @@ type Store struct {
|
|||||||
userSettingCache sync.Map // map[string]*userSettingRaw
|
userSettingCache sync.Map // map[string]*userSettingRaw
|
||||||
memoCache sync.Map // map[int]*memoRaw
|
memoCache sync.Map // map[int]*memoRaw
|
||||||
shortcutCache sync.Map // map[int]*shortcutRaw
|
shortcutCache sync.Map // map[int]*shortcutRaw
|
||||||
|
idpCache sync.Map // map[int]*identityProviderMessage
|
||||||
}
|
}
|
||||||
|
|
||||||
// New creates a new instance of Store.
|
// New creates a new instance of Store.
|
||||||
|
Reference in New Issue
Block a user