db

package
v0.5.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 1, 2026 License: BSD-2-Clause Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNoDocuments = errors.New("no documents in result")

ErrNoDocuments is returned when no documents are found

Functions

This section is empty.

Types

type AddIdentityQuery added in v0.5.7

type AddIdentityQuery struct {
	AuthenticSource    string   `json:"authentic_source" bson:"authentic_source"`
	Scope              string   `json:"scope" bson:"scope"`
	DocumentID         string   `json:"document_id" bson:"document_id"`
	IdentityMappingIDs []string `json:"identity_mapping_ids" bson:"identity_mapping_ids"`
}

AddIdentityQuery is the query to add document identity

type CredentialOfferColl added in v0.5.7

type CredentialOfferColl struct {
	Service *Service
	Coll    *mongo.Collection
	// contains filtered or unexported fields
}

func NewCredentialOfferColl

func NewCredentialOfferColl(ctx context.Context, collName string, service *Service, log *logger.Log) (*CredentialOfferColl, error)

func (*CredentialOfferColl) Delete added in v0.5.7

func (c *CredentialOfferColl) Delete(ctx context.Context, uuid string) error

Delete deletes one code_challenge

func (*CredentialOfferColl) Get added in v0.5.7

func (*CredentialOfferColl) Save added in v0.5.7

type CredentialOfferDocument

type CredentialOfferDocument struct {
	UUID                      string                               `bson:"uuid"`
	CredentialOfferParameters openid4vci.CredentialOfferParameters `bson:"credential_offer_parameters"`
}

type CredentialOfferStore

type CredentialOfferStore interface {
	Save(ctx context.Context, doc *CredentialOfferDocument) error
	Get(ctx context.Context, uuid string) (*CredentialOfferDocument, error)
	Delete(ctx context.Context, uuid string) error
}

CredentialOfferStore defines the interface for credential offer operations

type DatastoreColl added in v0.5.7

type DatastoreColl struct {
	Service *Service
	Coll    *mongo.Collection
	// contains filtered or unexported fields
}

DatastoreColl is the generic collection

func (*DatastoreColl) AddIdentity added in v0.5.7

func (c *DatastoreColl) AddIdentity(ctx context.Context, query *AddIdentityQuery) error

AddIdentity adds document identity

func (*DatastoreColl) Delete added in v0.5.7

func (c *DatastoreColl) Delete(ctx context.Context, doc *model.MetaData) error

Delete deletes a document

func (*DatastoreColl) DeleteByKey added in v0.5.7

func (c *DatastoreColl) DeleteByKey(ctx context.Context, authenticSource, scope, documentID string) error

DeleteByKey deletes a document by its natural key (authentic_source, scope, document_id)

func (*DatastoreColl) DeleteIdentity added in v0.5.7

func (c *DatastoreColl) DeleteIdentity(ctx context.Context, query *DeleteIdentityQuery) error

DeleteIdentity deletes identity in document

func (*DatastoreColl) Get added in v0.5.7

func (c *DatastoreColl) Get(ctx context.Context, meta *model.MetaData) (*model.Document, error)

Get return matching document if any, or error

func (*DatastoreColl) GetByIdentity added in v0.5.7

func (c *DatastoreColl) GetByIdentity(ctx context.Context, scope, identityMappingID string) (map[string]*model.CompleteDocument, error)

GetByIdentity returns matching documents for a scope where any of the document's identity_mapping_ids match the provided identifier.

func (*DatastoreColl) GetByKey added in v0.5.7

func (c *DatastoreColl) GetByKey(ctx context.Context, authenticSource, scope, documentID string) (*model.CompleteDocument, error)

GetByKey retrieves a document by its natural key (authentic_source, scope, document_id)

func (*DatastoreColl) List added in v0.5.7

func (c *DatastoreColl) List(ctx context.Context, query *ListQuery) ([]*model.DocumentList, error)

List return matching documents if any, or error

func (*DatastoreColl) ListAuthenticSources added in v0.5.7

func (c *DatastoreColl) ListAuthenticSources(ctx context.Context) ([]string, error)

ListAuthenticSources returns all unique authentic_source values in the datastore

func (*DatastoreColl) Replace added in v0.5.7

func (c *DatastoreColl) Replace(ctx context.Context, doc *model.CompleteDocument) error

Replace replaces one document

func (*DatastoreColl) Save added in v0.5.7

Save saves one document to the generic collection

func (*DatastoreColl) SaveMany added in v0.5.7

func (c *DatastoreColl) SaveMany(ctx context.Context, docs []*model.CompleteDocument) error

SaveMany saves multiple documents to the generic collection using bulk insert

func (*DatastoreColl) Search added in v0.5.7

Search returns documents matching a text search or filters, with a limit

type DatastoreStore

type DatastoreStore interface {
	Save(ctx context.Context, doc *model.CompleteDocument) error
	SaveMany(ctx context.Context, docs []*model.CompleteDocument) error
	AddIdentity(ctx context.Context, query *AddIdentityQuery) error
	DeleteIdentity(ctx context.Context, query *DeleteIdentityQuery) error
	Delete(ctx context.Context, doc *model.MetaData) error
	Get(ctx context.Context, meta *model.MetaData) (*model.Document, error)
	GetByIdentity(ctx context.Context, scope, identityMappingID string) (map[string]*model.CompleteDocument, error)
	List(ctx context.Context, query *ListQuery) ([]*model.DocumentList, error)
	Replace(ctx context.Context, doc *model.CompleteDocument) error
	GetByKey(ctx context.Context, authenticSource, scope, documentID string) (*model.CompleteDocument, error)
	DeleteByKey(ctx context.Context, authenticSource, scope, documentID string) error
	Search(ctx context.Context, query *SearchDocumentsQuery) ([]*model.CompleteDocument, error)
	ListAuthenticSources(ctx context.Context) ([]string, error)
}

DatastoreStore defines the interface for datastore operations

type DeleteIdentityQuery added in v0.5.7

type DeleteIdentityQuery struct {
	AuthenticSource         string `json:"authentic_source" bson:"authentic_source"`
	Scope                   string `json:"scope" bson:"scope"`
	DocumentID              string `json:"document_id" bson:"document_id"`
	AuthenticSourcePersonID string `json:"authentic_source_person_id" bson:"authentic_source_person_id"`
}

DeleteIdentityQuery is the query to delete identity in document

type DeleteMappingQuery added in v0.5.7

type DeleteMappingQuery struct {
	AuthenticSource         string `json:"authentic_source"`
	AuthenticSourcePersonID string `json:"authentic_source_person_id"`
}

DeleteMappingQuery is the query for deleting an identity mapping

type DynamicRegistrationColl added in v0.5.7

type DynamicRegistrationColl struct {
	Service *Service
	Coll    *mongo.Collection
	// contains filtered or unexported fields
}

DynamicRegistrationColl handles persistence of dynamic client registration credentials.

func NewDynamicRegistrationColl

func NewDynamicRegistrationColl(ctx context.Context, collName string, service *Service, log *logger.Log) (*DynamicRegistrationColl, error)

NewDynamicRegistrationColl creates a new collection for dynamic registration credentials.

func (*DynamicRegistrationColl) Get added in v0.5.7

Get returns the stored credentials, or nil if none exist.

func (*DynamicRegistrationColl) Save added in v0.5.7

Save stores or replaces dynamic registration credentials.

type DynamicRegistrationCredentials

type DynamicRegistrationCredentials struct {
	ClientID                string    `bson:"client_id"`
	ClientSecret            string    `bson:"client_secret"`
	RegistrationAccessToken string    `bson:"registration_access_token,omitempty"`
	RegistrationClientURI   string    `bson:"registration_client_uri,omitempty"`
	ClientSecretExpiresAt   int64     `bson:"client_secret_expires_at,omitempty"`
	RegisteredAt            time.Time `bson:"registered_at"`
}

DynamicRegistrationCredentials holds OIDC dynamic client registration credentials.

type IdentityMappingStore added in v0.5.7

type IdentityMappingStore interface {
	CreateMapping(ctx context.Context, mapping *model.IdentityMapping) error
	CreateMappings(ctx context.Context, mappings []*model.IdentityMapping) error
	EnsureMapping(ctx context.Context, mapping *model.IdentityMapping) error
	ResolveMapping(ctx context.Context, query *ResolveMappingQuery) (string, error)
	UpdateMapping(ctx context.Context, mapping *model.IdentityMapping) error
	DeleteMapping(ctx context.Context, query *DeleteMappingQuery) error
	SearchMappings(ctx context.Context, query *SearchMappingsQuery) ([]*model.IdentityMapping, error)
}

IdentityMappingStore defines the interface for identity mapping operations

type IdentityMappingsColl added in v0.5.7

type IdentityMappingsColl struct {
	Service *Service
	Coll    *mongo.Collection
	// contains filtered or unexported fields
}

IdentityMappingsColl is the collection for identity mappings

func (*IdentityMappingsColl) CreateMapping added in v0.5.7

func (c *IdentityMappingsColl) CreateMapping(ctx context.Context, mapping *model.IdentityMapping) error

CreateMapping creates a new identity mapping

func (*IdentityMappingsColl) CreateMappings added in v0.5.7

func (c *IdentityMappingsColl) CreateMappings(ctx context.Context, mappings []*model.IdentityMapping) error

CreateMappings creates multiple identity mappings using bulk insert

func (*IdentityMappingsColl) DeleteMapping added in v0.5.7

func (c *IdentityMappingsColl) DeleteMapping(ctx context.Context, query *DeleteMappingQuery) error

DeleteMapping deletes an identity mapping

func (*IdentityMappingsColl) EnsureMapping added in v0.5.7

func (c *IdentityMappingsColl) EnsureMapping(ctx context.Context, mapping *model.IdentityMapping) error

EnsureMapping creates an identity mapping only if it does not already exist. If a record with the same (authentic_source, authentic_source_person_id) already exists, it is left unchanged.

func (*IdentityMappingsColl) ResolveMapping added in v0.5.7

func (c *IdentityMappingsColl) ResolveMapping(ctx context.Context, query *ResolveMappingQuery) (string, error)

ResolveMapping resolves identity attributes to an authentic_source_person_id.

func (*IdentityMappingsColl) SearchMappings added in v0.5.7

func (c *IdentityMappingsColl) SearchMappings(ctx context.Context, query *SearchMappingsQuery) ([]*model.IdentityMapping, error)

SearchMappings returns identity mappings matching a text search or filters, with a limit

func (*IdentityMappingsColl) UpdateMapping added in v0.5.7

func (c *IdentityMappingsColl) UpdateMapping(ctx context.Context, mapping *model.IdentityMapping) error

UpdateMapping updates the attributes of an existing identity mapping

type ListQuery added in v0.5.7

type ListQuery struct {
	AuthenticSource   string `json:"authentic_source" bson:"authentic_source"`
	IdentityMappingID string `json:"identity_mapping_id" bson:"identity_mapping_id" validate:"required"`
	Scope             string `json:"scope" bson:"scope"`
	ValidFrom         int64  `json:"valid_from" bson:"valid_from"`
	ValidTo           int64  `json:"valid_to" bson:"valid_to"`
}

ListQuery is the query to get document list

type ResolveMappingQuery added in v0.5.7

type ResolveMappingQuery struct {
	AuthenticSource string            `json:"authentic_source"`
	Attributes      map[string]string `json:"attributes"`
}

ResolveMappingQuery is the query for resolving attributes to an authentic_source_person_id

type SearchDocumentsQuery

type SearchDocumentsQuery struct {
	Search                  string   `json:"search"`
	AuthenticSource         string   `json:"authentic_source"`
	Scope                   string   `json:"scope"`
	Limit                   int64    `json:"limit"`
	AllowedAuthenticSources []string `json:"-"`
	AllowedScopes           []string `json:"-"`
}

SearchDocumentsQuery is the query for searching documents

type SearchMappingsQuery added in v0.5.7

type SearchMappingsQuery struct {
	Search                  string   `json:"search"`
	AuthenticSource         string   `json:"authentic_source"`
	Limit                   int64    `json:"limit"`
	AllowedAuthenticSources []string `json:"-"`
}

SearchMappingsQuery is the query for searching identity mappings

type Service

type Service struct {
	MongoClient *mongo.Client

	DatastoreColl           *DatastoreColl
	IdentityMappingsColl    *IdentityMappingsColl
	CredentialOfferColl     *CredentialOfferColl
	DynamicRegistrationColl *DynamicRegistrationColl
	// contains filtered or unexported fields
}

Service is the database service

func New

func New(ctx context.Context, cfg *model.Cfg, tracer *trace.Tracer, log *logger.Log) (*Service, error)

New creates a new database service

func (*Service) Close

func (s *Service) Close(ctx context.Context) error

Close closes the database connection

func (*Service) Status

Status returns the status of the database

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL