Below is a overview Go APIs, see auto generated go documentation
Table of contents
Fetch contents
package core/query
Note: in all queries, the condition syntax as below is used
ids := []int{3, 4, 5, 7, 9, 10}
condition := db.Cond("id", ids).Cond("l.depth", 2).Cond("author", 1).Sortby("modified desc").Limit(0, 2)
Fetch a content
Function | Description |
---|---|
FetchByID | Fetch a content by id |
FetchByCID | Fetch a content by content id |
Fetch | Fetch a content by condition |
FetchByUID | Fetch a content by unique id |
FetchByCUID | Fetch a content by content unique id |
Fetch List
Function | Description |
---|---|
SubList | Fetch content list under a content, with permission considered |
ListWithUser | Fetch content list with permission considered |
Children | Fetch children(direct children) with permission considered |
List | Fetch list by conditions(without permission considered) |
Fetch subtree
Function | Description |
---|---|
SubTree | Fetch sub tree of a content |
Fetch user/role
Function | Description |
---|---|
UserRole | Fetch users, roles based on condition |
Operate contents
package core/handler
Manipulate content
Function | Description |
---|---|
Create | Create content |
Update | Update a content |
Move | Move a content location |
DeleteByID | Delete a content by location id |
DeleteByCID | Delete a content by content id |
DeleteByContent | Delete a content |
User
Permission
package core/permission
Function | Description |
---|---|
HasAccessTo | Check if a user can accces to a operation |
CanRead | Check if a user can read a content |
CanUpdate | Check if a user can update a content |
CanDelete | Check if a user can delete a content |
Fetch policies and access | |
GetUserAccess | Get user limit list |
GetUserPolicies | Get user polices |
Operations | |
AssignToUser | Assign a role to a user |
RemoveAssignment | Remove the assignment of user role |
Database
package core/db
Conditions
A condition includes information of field, operator and value(eg. “id > “, 10). Operator can be ignored if it’s ‘=’ or ‘in’. Typical values are like 1(int), “hello”(string), or int/string slices(in will be used when querying), or datetime. So the value should be a baisc types or struct implementing database.sql.driver.Valuer.
Supported operators: ">", ">=", "<", "==", "<=", "!=", "=", "in", "like"
.
Note: “==” is for join between 2 targets.
It uses object-method style to build logical conditions.
//Below 2 are the same. Note: when using 'in/like' there should be a space before the operator
db.Cond("id>", ids)
db.Cond("id >", ids)
//id equals 3
db.Cond("id", 3)
//id in 1, 3
db.Cond("id", []int{1, 3})
//id in 1, 3 and author is 1
db.Cond("id", []int{1, 3}).Cond("author", 1)
Check here to see typical condition examples.
Function | Description |
---|---|
Cond | Create a condition |
EmptyCond | Empty condition |
TrueCond | Always true |
FalseCond | Always false |
Condition struct | |
Cond | Same as And&Cond combined |
And | Same as And with itself as first parameter |
Or | Same as Or with itself as first parameter |
Sortby | Sort by |
Limit | Limit |
WithCount | Always include count in result regarless limit |
Queries
There are 2 types of entities: content entities and normal entities. A content entity can be a combination from different tables. A typical normal entity is from a table.
Most of content related query can be done via apis in core/query.
If you want to fetch normal table data, BindEntity
is the way to go. You can create a struct or anonymous struct to bind into. There is also a db.Datamap
and DatamapList
which can be used for binding entities to a maplist or map. Check BindEntity
link in below table to see examples.
Function | Description |
---|---|
BindContent | Bind content(s) with a condition |
CountContent | Count content(s) with a condition |
BindEntity | Bind entity(s) with a condition |
Count | Count entity with a condition |
BindContentWithQuery | Bind conentent(s) with a query |
BindEntityWithQuery | Bind conentent(s) with a query |
Data operations
Below are low level data operations. Content manipulation normally is done via apis in core/handler since they includes validation, permission check, relation cache update, versioning, etc.
Utilities
package core/util
Log & Debug
package core/log