Documentation
¶
Index ¶
- Constants
- Variables
- func Close() error
- func Connect(conf config.DatabaseConfig) (err error)
- func CreateMember(ctx context.Context, member *Member) (err error)
- func CreateProject(ctx context.Context, project *Project) (err error)
- func CreateTenant(ctx context.Context, tenant *Tenant) (err error)
- func CreateTenantMember(ctx context.Context, member *Member) (err error)
- func CreateTenantProject(ctx context.Context, project *Project) (err error)
- func CreateTopic(ctx context.Context, topic *Topic) (err error)
- func CreateUserResources(ctx context.Context, projectID ulid.ULID, member *Member) (err error)
- func Delete(ctx context.Context, model Model) (err error)
- func DeleteMember(ctx context.Context, id ulid.ULID) (err error)
- func DeleteProject(ctx context.Context, id ulid.ULID) (err error)
- func DeleteTenant(ctx context.Context, id ulid.ULID) (err error)
- func DeleteTopic(ctx context.Context, id ulid.ULID) (err error)
- func Get(ctx context.Context, model Model) (err error)
- func GetMock() *mock.RemoteTrtl
- func IsConnected() bool
- func IsTesting() bool
- func List(ctx context.Context, prefix []byte, namespace string) (values [][]byte, err error)
- func Put(ctx context.Context, model Model) (err error)
- func UpdateMember(ctx context.Context, member *Member) (err error)
- func UpdateProject(ctx context.Context, project *Project) (err error)
- func UpdateTenant(ctx context.Context, tenant *Tenant) (err error)
- func UpdateTopic(ctx context.Context, topic *Topic) (err error)
- func ValidationError(model string) error
- type Member
- type Model
- type Project
- type Tenant
- type Topic
Constants ¶
const MembersNamespace = "members"
const ProjectNamespace = "projects"
const TenantNamespace = "tenants"
const TopicNamespace = "topics"
Variables ¶
var ( ErrNotConnected = errors.New("not connected to trtl database") ErrNotFound = errors.New("object not found for the specified key") ErrMissingID = errors.New("object requires id for serialization") ErrMissingOrgID = errors.New("object requires organization id for serialization") ErrMissingTenantID = errors.New("object requires tenant id for serialization") ErrMissingProjectID = errors.New("object requires project id for serialization") ErrMissingMemberName = errors.New("member name is required") ErrMissingMemberRole = errors.New("member role is required") ErrMissingProjectName = errors.New("project name is required") ErrMissingTenantName = errors.New("tenant name is required") ErrMissingEnvType = errors.New("tenant environment type is required") ErrMissingTopicName = errors.New("topic name is required") )
Functions ¶
func Close ¶
func Close() error
Close the connection to the database, once closed the package must be reconnected otherwise database operations will not succeed. If the database is already closed then no error will occur.
func Connect ¶
func Connect(conf config.DatabaseConfig) (err error)
Connect to the trtl database, this function must be called at least once before any database interaction can occur. Multiple calls to Connect will not error (e.g. if the database is already connected then nothing will happen).
func CreateMember ¶ added in v0.2.0
CreateMember adds a new Member to an organization in the database. Note: If a memberID is not passed in by the User, a new member id will be generated.
func CreateProject ¶ added in v0.2.0
CreateProject adds a new project to an organization in the database. Note: If a project id is not passed in by the User, a new project id will be generated.
func CreateTenant ¶
CreateTenant adds a new project to the database. Note: If a tenant id is not passed in by the User, a new tenant id will be generated.
func CreateTenantMember ¶ added in v0.2.0
CreateTenantMember adds a new Member to a tenant in the database. Note: If a memberID is not passed in by the User, a new member id will be generated.
func CreateTenantProject ¶ added in v0.2.0
CreateTenantProject adds a new project to a tenant in the database. Note: If a project id is not passed in by the User, a new project id will be generated.
func CreateTopic ¶ added in v0.2.0
CreateTopic adds a new topic to the database.
func CreateUserResources ¶ added in v0.3.0
CreateUserResources creates all the necessary database objects for a new user given a partially constructed member model. This method should be called after a new user has been successfully registered with Quarterdeck in order to allow the user to access default resources such as the tenant and project when they login.
func DeleteMember ¶ added in v0.2.0
DeleteMember deletes a member with a given id.
func DeleteProject ¶ added in v0.2.0
DeleteProject deletes a project with a given id.
func DeleteTenant ¶
func DeleteTopic ¶ added in v0.2.0
DeleteTopic deletes a topic by a given ID.
func GetMock ¶ added in v0.2.0
func GetMock() *mock.RemoteTrtl
func IsConnected ¶
func IsConnected() bool
IsConnected returns true if the database has been connected to without error and the db module is ready to interact with the trtl database.
func UpdateMember ¶ added in v0.2.0
UpdateMember updates the record of a member by its id.
func UpdateProject ¶ added in v0.2.0
UpdateProject updates the record of a project by its id.
func UpdateTopic ¶ added in v0.2.0
UpdateTopic updates the record of a topic by a given ID.
func ValidationError ¶ added in v0.3.0
Types ¶
type Member ¶ added in v0.2.0
type Member struct { OrgID ulid.ULID `msgpack:"org_id"` TenantID ulid.ULID `msgpack:"tenant_id"` ID ulid.ULID `msgpack:"id"` Name string `msgpack:"name"` Role string `msgpack:"role"` Created time.Time `msgpack:"created"` Modified time.Time `msgpack:"modified"` }
func ListMembers ¶ added in v0.2.0
ListMembers retrieves all members assigned to a tenant.
func RetrieveMember ¶ added in v0.2.0
RetrieveMember gets a member from the database with a given id.
func (*Member) Key ¶ added in v0.2.0
Key is a 32 byte composite key combining the tennat id and member id.
func (*Member) MarshalValue ¶ added in v0.2.0
func (*Member) UnmarshalValue ¶ added in v0.2.0
type Model ¶
type Model interface { // Handle database storage semantics Key() ([]byte, error) Namespace() string // Handle serialization and deserialization of a single Model MarshalValue() ([]byte, error) UnmarshalValue([]byte) error }
Models are structs that have key-value properties that can used for Get, Put, and Delete operations to the database. The Model interface allows us to unify common interaction patterns (for example checking connections) and returning specific errors as well as ensuring that serialization and deserialization occur correctly.
type Project ¶ added in v0.2.0
type Project struct { OrgID ulid.ULID `msgpack:"org_id"` TenantID ulid.ULID `msgpack:"tenant_id"` ID ulid.ULID `msgpack:"id"` Name string `msgpack:"name"` Created time.Time `msgpack:"created"` Modified time.Time `msgpack:"modified"` }
func ListProjects ¶ added in v0.2.0
ListProjects retrieves all projects assigned to a tenant.
func RetrieveProject ¶ added in v0.2.0
RetrieveProject gets a project from the database with a given id.
func (*Project) Key ¶ added in v0.2.0
Key is a 32 composite key combining the tenant id and the project id.
func (*Project) MarshalValue ¶ added in v0.2.0
func (*Project) UnmarshalValue ¶ added in v0.2.0
type Tenant ¶
type Tenant struct { OrgID ulid.ULID `msgpack:"org_id"` ID ulid.ULID `msgpack:"id"` Name string `msgpack:"name"` EnvironmentType string `msgpack:"environment_type"` Created time.Time `msgpack:"created"` Modified time.Time `msgpack:"modified"` }
func ListTenants ¶ added in v0.2.0
ListTenants retrieves all tenants assigned to an organization.
func RetrieveTenant ¶
func (*Tenant) MarshalValue ¶
func (*Tenant) UnmarshalValue ¶
type Topic ¶ added in v0.2.0
type Topic struct { OrgID ulid.ULID `msgpack:"org_id"` ProjectID ulid.ULID `msgpack:"project_id"` ID ulid.ULID `msgpack:"id"` Name string `msgpack:"name"` Created time.Time `msgpack:"created"` Modified time.Time `msgpack:"modified"` }
func ListTopics ¶ added in v0.2.0
ListTopics retrieves all topics assigned to a project.
func RetrieveTopic ¶ added in v0.2.0
RetrieveTopic gets a topic from the database by a given ID.
func (*Topic) Key ¶ added in v0.2.0
Key is a 32 composite key combining the project ID and the topic ID.