github.com/influxdata/influxdb/v2@v2.7.6/organization.go (about)

     1  package influxdb
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/influxdata/influxdb/v2/kit/platform"
     7  	"github.com/influxdata/influxdb/v2/kit/platform/errors"
     8  )
     9  
    10  // Organization is an organization. 🎉
    11  type Organization struct {
    12  	ID          platform.ID `json:"id,omitempty"`
    13  	Name        string      `json:"name"`
    14  	Description string      `json:"description"`
    15  	CRUDLog
    16  }
    17  
    18  // errors of org
    19  var (
    20  	// ErrOrgNameisEmpty is error when org name is empty
    21  	ErrOrgNameisEmpty = &errors.Error{
    22  		Code: errors.EInvalid,
    23  		Msg:  "org name is empty",
    24  	}
    25  )
    26  
    27  // ops for orgs error and orgs op logs.
    28  const (
    29  	OpFindOrganizationByID = "FindOrganizationByID"
    30  	OpFindOrganization     = "FindOrganization"
    31  	OpFindOrganizations    = "FindOrganizations"
    32  	OpCreateOrganization   = "CreateOrganization"
    33  	OpPutOrganization      = "PutOrganization"
    34  	OpUpdateOrganization   = "UpdateOrganization"
    35  	OpDeleteOrganization   = "DeleteOrganization"
    36  )
    37  
    38  // OrganizationService represents a service for managing organization data.
    39  type OrganizationService interface {
    40  	// Returns a single organization by ID.
    41  	FindOrganizationByID(ctx context.Context, id platform.ID) (*Organization, error)
    42  
    43  	// Returns the first organization that matches filter.
    44  	FindOrganization(ctx context.Context, filter OrganizationFilter) (*Organization, error)
    45  
    46  	// Returns a list of organizations that match filter and the total count of matching organizations.
    47  	// Additional options provide pagination & sorting.
    48  	FindOrganizations(ctx context.Context, filter OrganizationFilter, opt ...FindOptions) ([]*Organization, int, error)
    49  
    50  	// Creates a new organization and sets b.ID with the new identifier.
    51  	CreateOrganization(ctx context.Context, b *Organization) error
    52  
    53  	// Updates a single organization with changeset.
    54  	// Returns the new organization state after update.
    55  	UpdateOrganization(ctx context.Context, id platform.ID, upd OrganizationUpdate) (*Organization, error)
    56  
    57  	// Removes a organization by ID.
    58  	DeleteOrganization(ctx context.Context, id platform.ID) error
    59  }
    60  
    61  // OrganizationUpdate represents updates to a organization.
    62  // Only fields which are set are updated.
    63  type OrganizationUpdate struct {
    64  	Name        *string
    65  	Description *string `json:"description,omitempty"`
    66  }
    67  
    68  // ErrInvalidOrgFilter is the error indicate org filter is empty
    69  var ErrInvalidOrgFilter = &errors.Error{
    70  	Code: errors.EInvalid,
    71  	Msg:  "Please provide either orgID or org",
    72  }
    73  
    74  // OrganizationFilter represents a set of filter that restrict the returned results.
    75  type OrganizationFilter struct {
    76  	Name   *string
    77  	ID     *platform.ID
    78  	UserID *platform.ID
    79  }