Documentation
¶
Index ¶
- Variables
- type AuthenticationResult
- type ConditionType
- type DB
- func (db *DB) Authenticate(token string) (any, error)
- func (db *DB) Close() error
- func (db *DB) Info() (any, error)
- func (db *DB) Invalidate() (any, error)
- func (db *DB) Kill(query string) (any, error)
- func (db *DB) Let(key string, val any) (any, error)
- func (db *DB) Live(table string) (any, error)
- func (db *DB) Query(sql string, vars any) (any, error)
- func (db *DB) Signin(vars UserInfo) (any, error)
- func (db *DB) SigninUser(vars UserInfo) (*AuthenticationResult, error)
- func (db *DB) Signup(vars any) (any, error)
- func (db *DB) SignupUser(vars UserInfo) (*AuthenticationResult, error)
- func (db *DB) Use(ns string, dbname string) (any, error)
- type Model
- type Operator
- type OperatorTypes
- type OrderDirection
- type Patch
- type PermissionError
- type QueryBuilder
- func (qb *QueryBuilder[T]) Error() error
- func (qb *QueryBuilder[T]) Execute() *ResolvedQuery[T]
- func (qb *QueryBuilder[T]) Fetch(fields ...string) *QueryBuilder[T]
- func (qb *QueryBuilder[T]) First() *T
- func (qb *QueryBuilder[T]) FirstQueryResult() *ResultQuery[T]
- func (qb *QueryBuilder[T]) From(table string) *QueryBuilder[T]
- func (qb *QueryBuilder[T]) FromMultiple(tables ...string) *QueryBuilder[T]
- func (qb *QueryBuilder[T]) Get() []T
- func (qb *QueryBuilder[T]) GetParams() map[string]any
- func (qb *QueryBuilder[T]) GetQuery() string
- func (qb *QueryBuilder[T]) HasError() bool
- func (qb *QueryBuilder[T]) IsEmpty() bool
- func (qb *QueryBuilder[T]) Limit(value int) *QueryBuilder[T]
- func (qb *QueryBuilder[T]) OrderBy(field string, direction ...OrderDirection) *QueryBuilder[T]
- func (qb *QueryBuilder[T]) Results() []ResultQuery[T]
- func (qb *QueryBuilder[T]) Select(field string, as ...string) *QueryBuilder[T]
- func (qb *QueryBuilder[T]) SelectMany(fields ...[]string) *QueryBuilder[T]
- func (qb *QueryBuilder[T]) Start(value int) *QueryBuilder[T]
- func (qb *QueryBuilder[T]) TotalTimeTaken() time.Duration
- func (qb *QueryBuilder[T]) Where(field string, value any) *QueryBuilder[T]
- type QueryBuilderBasicCondition
- type QueryBuilderOrderClause
- type QueryBuilderParam
- type QueryBuilderSelectField
- type QueryConfig
- type QueryGrammarBuilder
- func (q *QueryGrammarBuilder[T]) Build() string
- func (q *QueryGrammarBuilder[T]) BuildConditions() string
- func (q *QueryGrammarBuilder[T]) BuildFetch() string
- func (q *QueryGrammarBuilder[T]) BuildOrderClauses() string
- func (q *QueryGrammarBuilder[T]) BuildSelects() string
- func (q *QueryGrammarBuilder[T]) BuildTables() string
- type QueryResolver
- type ResolvedCreateResult
- type ResolvedCrudResult
- func (resolver *ResolvedCrudResult[T]) All() []T
- func (resolver *ResolvedCrudResult[T]) Error() error
- func (resolver *ResolvedCrudResult[T]) First() *T
- func (resolver *ResolvedCrudResult[T]) HasError() bool
- func (resolver *ResolvedCrudResult[T]) IsEmpty() bool
- func (resolver *ResolvedCrudResult[T]) Item() *T
- func (resolver *ResolvedCrudResult[T]) Response() []T
- type ResolvedModifyResult
- type ResolvedQuery
- func (resolver *ResolvedQuery[T]) All() []T
- func (resolver *ResolvedQuery[T]) AllAreSuccessful() bool
- func (resolver *ResolvedQuery[T]) Error() error
- func (resolver *ResolvedQuery[T]) First() *T
- func (resolver *ResolvedQuery[T]) FirstQueryResult() *ResultQuery[T]
- func (resolver *ResolvedQuery[T]) HasError() bool
- func (resolver *ResolvedQuery[T]) IsEmpty() bool
- func (resolver *ResolvedQuery[T]) Results() []ResultQuery[T]
- func (resolver *ResolvedQuery[T]) TotalTimeTaken() time.Duration
- type ResolvedUpdateResult
- type ResultQuery
- type SurrealModel
- type TokenData
- type UserInfo
Constants ¶
This section is empty.
Variables ¶
var (
ErrInvalidLoginResponse = errors.New("invalid login response")
)
var (
ErrInvalidToken = errors.New("token string is invalid")
)
var ( // ErrResolvedQueryResultIsInvalid Need a better name :| ErrResolvedQueryResultIsInvalid = errors.New("the result from the database response is not valid, expected an array") )
var Operators = OperatorTypes{ Exact: Operator{/* contains filtered or unexported fields */}, NotEqual: Operator{/* contains filtered or unexported fields */}, AllEqual: Operator{/* contains filtered or unexported fields */}, AnyEqual: Operator{/* contains filtered or unexported fields */}, Equal: Operator{/* contains filtered or unexported fields */}, NotLike: Operator{/* contains filtered or unexported fields */}, AllLike: Operator{/* contains filtered or unexported fields */}, AnyLike: Operator{/* contains filtered or unexported fields */}, Like: Operator{/* contains filtered or unexported fields */}, LessThanOrEqual: Operator{/* contains filtered or unexported fields */}, LessThan: Operator{/* contains filtered or unexported fields */}, MoreThanOrEqual: Operator{/* contains filtered or unexported fields */}, MoreThan: Operator{/* contains filtered or unexported fields */}, Add: Operator{/* contains filtered or unexported fields */}, Sub: Operator{/* contains filtered or unexported fields */}, Mul: Operator{/* contains filtered or unexported fields */}, Div: Operator{/* contains filtered or unexported fields */}, And: Operator{/* contains filtered or unexported fields */}, Or: Operator{/* contains filtered or unexported fields */}, ContainAll: Operator{/* contains filtered or unexported fields */}, ContainAny: Operator{/* contains filtered or unexported fields */}, ContainNone: Operator{/* contains filtered or unexported fields */}, NotContain: Operator{/* contains filtered or unexported fields */}, Contain: Operator{/* contains filtered or unexported fields */}, AllInside: Operator{/* contains filtered or unexported fields */}, AnyInside: Operator{/* contains filtered or unexported fields */}, NoneInside: Operator{/* contains filtered or unexported fields */}, NotInside: Operator{/* contains filtered or unexported fields */}, Inside: Operator{/* contains filtered or unexported fields */}, Outside: Operator{/* contains filtered or unexported fields */}, Intersects: Operator{/* contains filtered or unexported fields */}, }
Functions ¶
This section is empty.
Types ¶
type AuthenticationResult ¶
type ConditionType ¶ added in v0.0.8
type ConditionType string
const ( RawCondition ConditionType = "raw" BasicCondition ConditionType = "basic" )
type DB ¶
type DB struct {
// contains filtered or unexported fields
}
DB is a client for the SurrealDB database that holds are websocket connection.
var Connection *DB
func (*DB) Invalidate ¶
func (*DB) SigninUser ¶
func (db *DB) SigninUser(vars UserInfo) (*AuthenticationResult, error)
SigninUser is a helper method for signing in a user and returning a typed response Note: This will probably fail when signing in as a root user, but for a regular user(via a scope for example) we get a JWT response
func (*DB) SignupUser ¶
func (db *DB) SignupUser(vars UserInfo) (*AuthenticationResult, error)
SignupUser is a helper method for signing in a user and returning a typed response
type OperatorTypes ¶ added in v0.0.8
type OperatorTypes struct {
// Symbol Operators
Exact Operator
NotEqual Operator
AllEqual Operator
AnyEqual Operator
Equal Operator
NotLike Operator
AllLike Operator
AnyLike Operator
Like Operator
LessThanOrEqual Operator
LessThan Operator
MoreThanOrEqual Operator
MoreThan Operator
Add Operator
Sub Operator
Mul Operator
Div Operator
// Phrase Operators
And Operator
Or Operator
ContainAll Operator
ContainAny Operator
ContainNone Operator
NotContain Operator
Contain Operator
AllInside Operator
AnyInside Operator
NoneInside Operator
NotInside Operator
Inside Operator
Outside Operator
Intersects Operator
}
type OrderDirection ¶ added in v0.0.8
type OrderDirection string
const ( OrderDirectionAsc OrderDirection = "ASC" OrderDirectionDesc OrderDirection = "DESC" )
type PermissionError ¶
type PermissionError struct {
// contains filtered or unexported fields
}
func (PermissionError) Error ¶
func (pe PermissionError) Error() string
type QueryBuilder ¶ added in v0.0.8
type QueryBuilder[T any] struct { // contains filtered or unexported fields }
func NewBuilder ¶ added in v0.0.8
func NewBuilder[T any](table ...string) *QueryBuilder[T]
func (*QueryBuilder[T]) Error ¶ added in v0.0.8
func (qb *QueryBuilder[T]) Error() error
func (*QueryBuilder[T]) Execute ¶ added in v0.0.8
func (qb *QueryBuilder[T]) Execute() *ResolvedQuery[T]
func (*QueryBuilder[T]) Fetch ¶ added in v0.0.8
func (qb *QueryBuilder[T]) Fetch(fields ...string) *QueryBuilder[T]
func (*QueryBuilder[T]) First ¶ added in v0.0.8
func (qb *QueryBuilder[T]) First() *T
func (*QueryBuilder[T]) FirstQueryResult ¶ added in v0.0.8
func (qb *QueryBuilder[T]) FirstQueryResult() *ResultQuery[T]
func (*QueryBuilder[T]) From ¶ added in v0.0.8
func (qb *QueryBuilder[T]) From(table string) *QueryBuilder[T]
From sets the table to query from(when only using one table)
func (*QueryBuilder[T]) FromMultiple ¶ added in v0.0.8
func (qb *QueryBuilder[T]) FromMultiple(tables ...string) *QueryBuilder[T]
FromMultiple sets the table to query from(when using multiple tables)
func (*QueryBuilder[T]) Get ¶ added in v0.0.8
func (qb *QueryBuilder[T]) Get() []T
func (*QueryBuilder[T]) GetParams ¶ added in v0.0.8
func (qb *QueryBuilder[T]) GetParams() map[string]any
func (*QueryBuilder[T]) GetQuery ¶ added in v0.0.8
func (qb *QueryBuilder[T]) GetQuery() string
GetQuery returns the query string
func (*QueryBuilder[T]) HasError ¶ added in v0.0.8
func (qb *QueryBuilder[T]) HasError() bool
func (*QueryBuilder[T]) IsEmpty ¶ added in v0.0.8
func (qb *QueryBuilder[T]) IsEmpty() bool
func (*QueryBuilder[T]) Limit ¶ added in v0.0.8
func (qb *QueryBuilder[T]) Limit(value int) *QueryBuilder[T]
func (*QueryBuilder[T]) OrderBy ¶ added in v0.0.8
func (qb *QueryBuilder[T]) OrderBy(field string, direction ...OrderDirection) *QueryBuilder[T]
OrderBy adds an order by clause
func (*QueryBuilder[T]) Results ¶ added in v0.0.8
func (qb *QueryBuilder[T]) Results() []ResultQuery[T]
func (*QueryBuilder[T]) Select ¶ added in v0.0.8
func (qb *QueryBuilder[T]) Select(field string, as ...string) *QueryBuilder[T]
Select adds a field to the selection
func (*QueryBuilder[T]) SelectMany ¶ added in v0.0.8
func (qb *QueryBuilder[T]) SelectMany(fields ...[]string) *QueryBuilder[T]
SelectMany adds a field to the selection This works like: .SelectMany([][]string{"FIELD NAME", "SELECT AS"}, [][]string{"USERNAME", "name"})
func (*QueryBuilder[T]) Start ¶ added in v0.0.8
func (qb *QueryBuilder[T]) Start(value int) *QueryBuilder[T]
func (*QueryBuilder[T]) TotalTimeTaken ¶ added in v0.0.8
func (qb *QueryBuilder[T]) TotalTimeTaken() time.Duration
func (*QueryBuilder[T]) Where ¶ added in v0.0.8
func (qb *QueryBuilder[T]) Where(field string, value any) *QueryBuilder[T]
Where adds a basic where x = y clause
type QueryBuilderBasicCondition ¶ added in v0.0.8
type QueryBuilderBasicCondition struct {
// contains filtered or unexported fields
}
type QueryBuilderOrderClause ¶ added in v0.0.8
type QueryBuilderOrderClause struct {
// contains filtered or unexported fields
}
type QueryBuilderParam ¶ added in v0.0.8
type QueryBuilderParam struct {
// contains filtered or unexported fields
}
func (*QueryBuilderParam) ForQuery ¶ added in v0.0.8
func (p *QueryBuilderParam) ForQuery() string
type QueryBuilderSelectField ¶ added in v0.0.8
type QueryBuilderSelectField struct {
// contains filtered or unexported fields
}
type QueryConfig ¶
type QueryGrammarBuilder ¶ added in v0.0.8
type QueryGrammarBuilder[T any] struct { // contains filtered or unexported fields }
func BuildQueryGrammar ¶ added in v0.0.8
func BuildQueryGrammar[T any](builder *QueryBuilder[T]) *QueryGrammarBuilder[T]
func (*QueryGrammarBuilder[T]) Build ¶ added in v0.0.8
func (q *QueryGrammarBuilder[T]) Build() string
func (*QueryGrammarBuilder[T]) BuildConditions ¶ added in v0.0.8
func (q *QueryGrammarBuilder[T]) BuildConditions() string
func (*QueryGrammarBuilder[T]) BuildFetch ¶ added in v0.0.8
func (q *QueryGrammarBuilder[T]) BuildFetch() string
func (*QueryGrammarBuilder[T]) BuildOrderClauses ¶ added in v0.0.8
func (q *QueryGrammarBuilder[T]) BuildOrderClauses() string
func (*QueryGrammarBuilder[T]) BuildSelects ¶ added in v0.0.8
func (q *QueryGrammarBuilder[T]) BuildSelects() string
func (*QueryGrammarBuilder[T]) BuildTables ¶ added in v0.0.8
func (q *QueryGrammarBuilder[T]) BuildTables() string
type QueryResolver ¶
type QueryResolver[T any] struct { // contains filtered or unexported fields }
type ResolvedCreateResult ¶
ResolvedCreateResult Handles the results of database "create" responses Only returns one item in the response
func Create ¶
Create This will create a new document It is the same as: https://surrealdb.com/docs/integration/http#create-all
type ResolvedCrudResult ¶
type ResolvedCrudResult[T any] struct { // contains filtered or unexported fields }
ResolvedCrudResult Handles the results of database, create, update, delete etc responses
func NewResolvedCrudResult ¶
func NewResolvedCrudResult[T any](response *internal.RPCRawResponse) *ResolvedCrudResult[T]
func Select ¶ added in v0.0.6
func Select[T any](what string) *ResolvedCrudResult[T]
Select this will select one or many documents It is the same as: https://surrealdb.com/docs/integration/http#select-all
func (*ResolvedCrudResult[T]) All ¶
func (resolver *ResolvedCrudResult[T]) All() []T
All Get all the items from the query, Used when you expect > 1 result
func (*ResolvedCrudResult[T]) Error ¶
func (resolver *ResolvedCrudResult[T]) Error() error
func (*ResolvedCrudResult[T]) First ¶
func (resolver *ResolvedCrudResult[T]) First() *T
First Get the first item from the query Used when you expect only 1 item to be returned
func (*ResolvedCrudResult[T]) HasError ¶
func (resolver *ResolvedCrudResult[T]) HasError() bool
func (*ResolvedCrudResult[T]) IsEmpty ¶ added in v0.0.7
func (resolver *ResolvedCrudResult[T]) IsEmpty() bool
IsEmpty Check if the response is empty
func (*ResolvedCrudResult[T]) Item ¶
func (resolver *ResolvedCrudResult[T]) Item() *T
Item This is used for the ResolvedCreateResult interface
func (*ResolvedCrudResult[T]) Response ¶
func (resolver *ResolvedCrudResult[T]) Response() []T
type ResolvedModifyResult ¶
type ResolvedModifyResult struct {
// contains filtered or unexported fields
}
ResolvedModifyResult Handles the results of database, create, update, delete etc responses
func Modify ¶
func Modify(what string, data []Patch) *ResolvedModifyResult
Modify applies a JSONPatch to the document
func NewResolvedModifyResult ¶
func NewResolvedModifyResult(response *internal.RPCRawResponse) *ResolvedModifyResult
func (*ResolvedModifyResult) All ¶
func (resolver *ResolvedModifyResult) All() [][]Patch
All Get all the items from the query, Used when you expect > 1 result
func (*ResolvedModifyResult) Error ¶
func (resolver *ResolvedModifyResult) Error() error
func (*ResolvedModifyResult) First ¶
func (resolver *ResolvedModifyResult) First() []Patch
First Get the first item from the query Used when you expect only 1 item to be returned
func (*ResolvedModifyResult) HasError ¶
func (resolver *ResolvedModifyResult) HasError() bool
func (*ResolvedModifyResult) Response ¶
func (resolver *ResolvedModifyResult) Response() [][]Patch
type ResolvedQuery ¶
type ResolvedQuery[T any] struct { // contains filtered or unexported fields }
ResolvedQuery Handles the results of database "query" responses
func NewResolvedQuery ¶
func NewResolvedQuery[T any](response *internal.RPCRawResponse) *ResolvedQuery[T]
func Query ¶
func Query[T any](query string, params ...map[string]any) *ResolvedQuery[T]
Query creates a new query resolver Automatically uses the global db instance, ctx and uses ctx timeouts if configured
func QueryWithConfig ¶
func QueryWithConfig[T any](config QueryConfig) *ResolvedQuery[T]
QueryWithConfig creates a new query resolver Uses a specific db instance and ctx, does not use auto ctx timeouts
func (*ResolvedQuery[T]) All ¶
func (resolver *ResolvedQuery[T]) All() []T
All Get all the items from the query, Used when you expect > 1 result
func (*ResolvedQuery[T]) AllAreSuccessful ¶
func (resolver *ResolvedQuery[T]) AllAreSuccessful() bool
AllAreSuccessful Check if all are results from the query have a status of "OK"
func (*ResolvedQuery[T]) Error ¶
func (resolver *ResolvedQuery[T]) Error() error
func (*ResolvedQuery[T]) First ¶
func (resolver *ResolvedQuery[T]) First() *T
First Get the first item from the query Used when you expect only 1 item to be returned
func (*ResolvedQuery[T]) FirstQueryResult ¶
func (resolver *ResolvedQuery[T]) FirstQueryResult() *ResultQuery[T]
FirstQueryResult Get the first query result from the response
For clarity, our resolver.results holds something like: [{"result":[],"status":"OK","time":"29.375µs"}]
This method will return this first object: {"result":[],"status":"OK","time":"29.375µs"}
func (*ResolvedQuery[T]) HasError ¶
func (resolver *ResolvedQuery[T]) HasError() bool
func (*ResolvedQuery[T]) IsEmpty ¶ added in v0.0.2
func (resolver *ResolvedQuery[T]) IsEmpty() bool
IsEmpty Check if the response is empty
func (*ResolvedQuery[T]) Results ¶
func (resolver *ResolvedQuery[T]) Results() []ResultQuery[T]
func (*ResolvedQuery[T]) TotalTimeTaken ¶
func (resolver *ResolvedQuery[T]) TotalTimeTaken() time.Duration
TotalTimeTaken Get the total time taken for all the queries to complete
type ResolvedUpdateResult ¶
ResolvedUpdateResult Handles the results of database "create" responses Only returns one item in the response
func Change ¶
Change This will apply a "merge" change to the document It is the same as: https://surrealdb.com/docs/integration/http#modify-one
func Delete ¶
func Delete[T any](what string) ResolvedUpdateResult[T]
Delete deletes a document or all documents
func Update ¶
Update This will apply a "replace" change to the document It is the same as: https://surrealdb.com/docs/integration/http#update-one
type ResultQuery ¶
type ResultQuery[T any] struct { Result []T `json:"result"` Status string `json:"status"` Time string `json:"time"` }
ResultQuery represents the result of a .Query() call
type SurrealModel ¶ added in v0.0.8
type SurrealModel interface {
TableName() string
}
type TokenData ¶
type UserInfo ¶
type UserInfo struct {
User string `json:"user"`
Password string `json:"pass"`
Namespace string `json:"NS,omitempty"`
Database string `json:"DB,omitempty"`
Scope string `json:"SC,omitempty"`
}
UserInfo TODO: A way to make User and Password use different names via configuration This method only works if your scope is configured with those namings also, otherwise auth will fail