Documentation
¶
Index ¶
- type Account
- type Bootstrap
- type CurrentSession
- type Db
- type DbOperations
- type FileFilter
- type FileItem
- type Issue
- type IssueFilter
- type IssueGrid
- type IssueGroupFilter
- type IssueGroupResult
- type IssueStatusFn
- type Permission
- type Priority
- type Project
- type ProjectFilter
- type ProjectMeta
- type ProjectQuery
- type Session
- type Status
- type User
- type WorkflowMeta
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Account ¶
type Account interface {
SessionDb() Session
SetSessionDb(item *Session)
UserDb() User
SetUserDb(item *User)
//Tries to load an user given its id or email
FullLoadUser(tx interface{}, user *domain.User) error
//Creates a new session object and increases the login count
//If validatePassword parameter is false, then no authentication method is used
LoginUser(tx interface{}, email, password string, ipaddress string, validatePassword bool) (*domain.Session, error)
//Removes the active session for the connected user
LogoutUser(tx interface{}) error
//Changes the password of any user
ChangePassword(tx interface{}, id string, password string) error
//Changes the password for the connected user
ChangeMyPassword(tx interface{}, password string) error
//Delays the session expire date based on the duration provided as parameter
LoginDelay(tx interface{}, delay time.Duration) error
//Creates a token for password recovery
PasswordRecoverCreateToken(tx interface{}, user *domain.User) error
//Verifies the token for password recovery is good.
VerifyTokenEmail(tx interface{}, user *domain.User, ipaddress string) error
}
type Bootstrap ¶
type Bootstrap interface {
PriorityDb() Priority
SetPriorityDb(item *Priority)
StatusDb() Status
SetStatusDb(item *Status)
UserDb() User
SetUserDb(item *User)
//Bootstraps the database and configuration for the first time the app runs
//database and db objects must exist before this method is executed
BootstrapAll(tx interface{}, conn *setup.ConfigurationDatabase, environment string, chdir string) error
//Creates the first admin user in database, if it already exists returns true on first return value
BootstrapAdminUser(tx interface{}) (exists bool, admin *domain.User, err error)
//Make the chdir point to the root of the application
ResetApplicationPath(chdir string) error
//Executes any migration tool to upgrade db objects and data
UpgradeDbScripts(conn *setup.ConfigurationDatabase, environment string, chdir string) error
//Bootstraps all the permission names
CreatePermissionNames(tx interface{}) error
//Add basic workflows as part of the startup
BootstrapWorkflows(tx interface{}) error
//Add some values to catalog
BootstrapPriorities(tx interface{}) error
}
type CurrentSession ¶
type CurrentSession interface {
CurrentSession() *domain.Session
SetCurrentSession(user *domain.Session)
}
Defines operations with connected users
type Db ¶
type Db interface {
//Creates a new database transaction and returns its object
Begin() (interface{}, error)
//Commmits a database transaction
Commit(tran interface{}) error
//Rollbacks a database transaction
Rollback(tran interface{}) error
//Starts the SQL Tracing
SqlTraceOn()
//Stops the SQL Tracing
SqlTraceOff()
//If the engine is compatible with any relational database,
//it will register all the internal structs to tables
Register()
//Contains the object which holds information about the current session connected
//to the system
CurrentSession
//Closes the db connections and releases resources
Close()
}
base del db
type DbOperations ¶
type DbOperations struct {
//Main database implementation
Db Db
//Login, authentication operations
AccountDb Account
//ERP Bootstrap operations
BootstrapDb Bootstrap
//FileItem operations
FileItemDb FileItem
//Issue, IssueAttachment, IssueComment and IssueSubscription operations
IssueDb Issue
//PermissionName, PermissionScheme, PermissionSchemeItem operations
PermissionDb Permission
//Priority operations
PriorityDb Priority
//Project, ProjectRole and ProjectRoleMember operations
ProjectDb Project
//Session manager
SessionDb Session
//Status, Workflow and WorkflowStep operations
StatusDb Status
//User, UserGroup, Group and Role operations
UserDb User
}
Container of all db operations
type FileFilter ¶
type FileFilter struct {
YearMonth string
}
Filter used to query the DirectoryGrid
type FileItem ¶
type FileItem interface {
//Creates a new FileItem in database
Create(tx interface{}, item *domain.FileItem) error
//Retrieves a FileItem object along with the data it contains
Data(tx interface{}, id string) (*domain.FileItem, error)
//Loads only the metadata of the FileItem without the data
Load(tx interface{}, id string) (*domain.FileItem, error)
//Removes the metadata and file data from database
Remove(tx interface{}, id string) (*domain.FileItem, error)
//Returs a grid based on information splitted by year and month simulating a directory structure
DirectoryGrid(tx interface{}, grid *tecgrid.NgGrid) error
//Returns a grid of files
FileGrid(tx interface{}, grid *tecgrid.NgGrid, filter *FileFilter) error
}
type Issue ¶
type Issue interface {
FileItemDb() FileItem
SetFileItemDb(item *FileItem)
PermissionDb() Permission
SetPermissionDb(item *Permission)
PriorityDb() Priority
SetPriorityDb(item *Priority)
ProjectDb() Project
SetProjectDb(item *Project)
StatusDb() Status
SetStatusDb(item *Status)
UserDb() User
SetUserDb(item *User)
//Adds an attachment to an issue
AttachmentAdd(tx interface{}, issue *domain.Issue, item *domain.FileItem) (*domain.IssueAttachment, error)
//Loads an Attachment from database along with inner objects
AttachmentLoad(tx interface{}, id string) (*domain.IssueAttachment, error)
//Removes an Attachment from database along with the FileItem it is related
AttachmentRemove(tx interface{}, attachment *domain.IssueAttachment) error
//Returns a list of attachments for a given issue
AttachmentList(tx interface{}, issue *domain.Issue) ([]domain.IssueAttachment, error)
//Removes all the attachments from a given issue
AttachmentRemoveAll(tx interface{}, issue *domain.Issue) error
//Returns the list of comments for a given issue
CommentList(tx interface{}, issue *domain.Issue) ([]domain.IssueComment, error)
//Adds a comment to a given issue
CommentAdd(tx interface{}, comment *domain.IssueComment) error
//Retrieves a comment from database by its id
CommentLoad(tx interface{}, id string) (*domain.IssueComment, error)
//Updates a comment in database
CommentUpdate(tx interface{}, comment *domain.IssueComment) error
//Removes a comment from database
CommentRemove(tx interface{}, id string) (*domain.IssueComment, error)
//Removes all the comments that are related with a given issue
CommentRemoveAll(tx interface{}, issue *domain.Issue) error
//Returns a query grouping pending issues by assignee
DashbordIssueGroupByAssignee(tx interface{}, filter *IssueGroupFilter) ([]IssueGroupResult, error)
//Returns a query grouping pending issues by reporter
DashbordIssueGroupByReporter(tx interface{}, filter *IssueGroupFilter) ([]IssueGroupResult, error)
//Returns a query grouping pending issues by priority
DashboardIssueGroupByPriority(tx interface{}, filter *IssueGroupFilter) ([]IssueGroupResult, error)
//Returns a query grouping pending issues by status
DashboardIssueGroupByStatus(tx interface{}, filter *IssueGroupFilter) ([]IssueGroupResult, error)
//Returns a query grouping pending issues by project
DashboardIssueGroupByProject(tx interface{}, filter *IssueGroupFilter) ([]IssueGroupResult, error)
//Returns a query grouping pending issues by year/month of dueDate
DashbordIssueGroupByDueDate(tx interface{}, filter *IssueGroupFilter) ([]IssueGroupResult, error)
//Changes the status of a given issue and takes as parameter a func to process if there are no errors
StatusChange(tx interface{}, issue *domain.Issue, status *domain.Status, fn IssueStatusFn) error
//Returns the list of users subscribed to a given issue
Subscribers(tx interface{}, issue *domain.Issue, excludeCurrentUser bool) (items []domain.User, err error)
//Returns a list of the subscriptions the current session users' has been subscribed
MySubscriptions(tx interface{}, grid *tecgrid.NgGrid) error
//Processes a grid with all the subscriptions for a given user
SubscriptionsUser(tx interface{}, grid *tecgrid.NgGrid, user *domain.User) error
//Subscribes or unsubscribes the connected user with an Issue
SubscriptionToggle(tx interface{}, issue *domain.Issue) (selected bool, err error)
//Subscribes or unsubscribes a given user with an Issue
SubscriptionToggleUser(tx interface{}, issue *domain.Issue, user *domain.User) (selected bool, err error)
//Returns true if the given user is subscribed, false if he is not
IsSubscribed(tx interface{}, issue *domain.Issue, user *domain.User) (ok bool, err error)
//Returns a list of users subscribed/unsubscribed to a given issue
SubscribersIssue(tx interface{}, issue *domain.Issue) (selected []domain.User, unselected []domain.User, err error)
//Adds a subscription to a given issue
SubscriptionAdd(tx interface{}, issue *domain.Issue, user *domain.User) error
//Creates an issue
Create(tx interface{}, item *domain.Issue, parent string) error
//Loads an issue along with its inner objects
Load(tx interface{}, id string, pkey string) (*domain.Issue, error)
//Removes an issue from database
Remove(tx interface{}, id string) (*domain.Issue, error)
//Returns the id of the root issue for a given issue
FindRoot(tx interface{}, id string) (root string, err error)
//Updates an issue in database
Update(tx interface{}, u *domain.Issue) error
//Processes the grid query for issues applying permissions when requiered
Grid(tx interface{}, grid *tecgrid.NgGrid, filter *IssueFilter) error
//Gets all the slibings at the first level for a given issue
Children(tx interface{}, issue *domain.Issue) ([]IssueGrid, error)
//Updates an Issue moving the project from where it belongs. A new pkey is assigned and new
//permissions will apply depending on the new project configuration
MoveProject(tx interface{}, issue *domain.Issue, target *domain.Project) (*domain.Issue, error)
}
type IssueFilter ¶
type IssueGroupFilter ¶
type IssueGroupResult ¶
type IssueStatusFn ¶
type IssueStatusFn func(tx interface{}, oldItem *domain.Issue, nextStep *domain.WorkflowStep, oldStatus *domain.Status, newStatus *domain.Status) error
Lambda that can be passed as required when an Issue status has changed
type Permission ¶
type Permission interface {
ProjectDb() Project
SetProjectDb(item *Project)
UserDb() User
SetUserDb(item *User)
//Returns a list of all the permission names in database
Names(tx interface{}) ([]domain.PermissionName, error)
//Given an user and a permission name, optionaly also an Issue (evaluating the project where it belongs to)
//Evaluates if the access is granted or not
AllowedUser(tx interface{}, user *domain.User, issue *domain.Issue, permission *domain.PermissionName) (ok bool, err error)
//Given an user and optionaly an Issue, returns the list of permission names the user can access
AvailablesUser(tx interface{}, user *domain.User, issue *domain.Issue) ([]domain.PermissionName, error)
//Creates a new permission scheme item
ItemAdd(tx interface{}, item *domain.PermissionSchemeItem) error
//Loads a permission scheme item
ItemLoad(tx interface{}, item *domain.PermissionSchemeItem) (*domain.PermissionSchemeItem, error)
//Removes a permission scheme item
ItemRemove(tx interface{}, item *domain.PermissionSchemeItem) error
//Returns a list of all permission scheme items that belong to a given permission scheme and user
Items(tx interface{}, item *domain.PermissionScheme) ([]domain.PermissionSchemeItem, error)
//Creates a permission scheme on database
Create(tx interface{}, item *domain.PermissionScheme) error
//Updates a permission scheme in database
Update(tx interface{}, item *domain.PermissionScheme) error
//Loads the permission scheme from database
Load(tx interface{}, id string) (*domain.PermissionScheme, error)
//Returns a list of all the permission schemes available
List(tx interface{}) ([]domain.PermissionScheme, error)
//Removes a permission scheme from database
Remove(tx interface{}, id string) (*domain.PermissionScheme, error)
//Processes a grid query for permission schemes
Grid(tx interface{}, grid *tecgrid.NgGrid) error
//Returns a list of all the projects which are using a given permission scheme
Projects(tx interface{}, item *domain.PermissionScheme) ([]ProjectQuery, error)
//Clears all the permission scheme items for a given permission scheme
ClearAll(tx interface{}, item *domain.PermissionScheme) error
}
type Priority ¶
type Priority interface {
//Creates a new priority in database
Create(tx interface{}, priority *domain.Priority) error
//Loads a priority from database
Load(tx interface{}, id string) (*domain.Priority, error)
//Removes a priority from database
Remove(tx interface{}, id string) (*domain.Priority, error)
//Updates a priority in database
Update(tx interface{}, priority *domain.Priority) error
//Returns a list of all the priorities in database
List(tx interface{}) ([]domain.Priority, error)
//Returns the first priority available in database
GetFirst(tx interface{}) (*domain.Priority, error)
//Processes a query grid of priorities
Grid(tx interface{}, grid *tecgrid.NgGrid) error
ValidateDups(tx interface{}, item *domain.Priority) error
}
type Project ¶
type Project interface {
PermissionDb() Permission
SetPermissionDb(item *Permission)
UserDb() User
SetUserDb(item *User)
//Creates a project in database
Create(tx interface{}, item *domain.Project) error
//Loads a project from database including inner objects
Load(tx interface{}, id string) (*domain.Project, error)
//Loads just the basic project information from database
LoadSimple(tx interface{}, id string) (*domain.Project, error)
//Removes a project from database
Remove(tx interface{}, id string) (*domain.Project, error)
//Updates a project in datebase
Update(tx interface{}, item *domain.Project) error
//Processes a query grid of projects applying permissions on the connected user
Grid(tx interface{}, grid *tecgrid.NgGrid, filter *ProjectFilter) error
//Generates a simulated sequence next number for a given project
NextNumber(tx interface{}, id string) (*domain.Project, error)
//Checks for duplicated projects in database based in the name or pkey
ValidateDups(tx interface{}, item *domain.Project) error
//Returns the project data along with other dependencies for the UI
CreateMeta(tx interface{}, id string) (*ProjectMeta, error)
//Adds a project role to a project
RoleAdd(tx interface{}, item *domain.ProjectRole) error
//Removes a project role from a project
RoleRemove(tx interface{}, item *domain.ProjectRole) error
//Loads a project role from a project
RoleLoad(tx interface{}, project *domain.Project, role *domain.Role) (*domain.ProjectRole, error)
//Returns all the project roles that a given user for a given project can access
Roles(tx interface{}, item *domain.Project) ([]domain.ProjectRole, error)
//Generates all the rows of project roles for a given project
RoleCreateAll(tx interface{}, item *domain.Project) error
//Loads a member for a project role, along with its group, role or user related
RoleMemberLoad(tx interface{}, project *domain.Project, role *domain.Role, user *domain.User, group *domain.Group) (*domain.ProjectRoleMember, error)
//Creates a new member to the project role
RoleMemberAdd(tx interface{}, projectRole *domain.ProjectRole, user *domain.User, group *domain.Group) error
//Removes a member from the project role
RoleMemberRemove(tx interface{}, item *domain.ProjectRoleMember) error
//Returns a list of project role members for a given project role
RoleMembers(tx interface{}, item *domain.ProjectRole) ([]domain.ProjectRoleMember, error)
//Returns a list of project role members for a given project
RoleProjectMembers(tx interface{}, item *domain.Project) ([]domain.ProjectRoleMember, error)
}
type ProjectFilter ¶
type ProjectMeta ¶
type ProjectQuery ¶
type Session ¶
type Session interface {
UserDb() User
SetUserDb(item *User)
//Returns a list of all the active sessions for a given user
List(tx interface{}, user *domain.User) ([]domain.Session, error)
//Loads the session from database
Load(tx interface{}, token string) (*domain.Session, error)
//Removes the session from database
Remove(tx interface{}, token string, validateCurrentSession bool) error
//Updates the session from database
Update(tx interface{}, session *domain.Session) error
//Creates a new session for a login user
Create(tx interface{}, session *domain.Session) error
//Middleware function to retrieve the current session based on the token provided
ValidateToken(tx interface{}, token string) (*domain.Session, error)
}
type Status ¶
type Status interface {
UserDb() User
SetUserDb(item *User)
//Loads a status object from database
Load(tx interface{}, id string) (*domain.Status, error)
//Creates a new status in database
Create(tx interface{}, item *domain.Status) error
//Updates a status in database
Update(tx interface{}, item *domain.Status) error
//Removes a status from database
Remove(tx interface{}, id string) (*domain.Status, error)
//List all of the statuses the are related with a given Workflow object
List(tx interface{}, workflow *domain.Workflow) ([]domain.Status, error)
//Loads a Workflow object from database
WorkflowLoad(tx interface{}, id string) (item *domain.Workflow, err error)
//Creates a new Workflow object in database
WorkflowCreate(tx interface{}, item *domain.Workflow) error
//Updates a Workflow object in database
WorkflowUpdate(tx interface{}, item *domain.Workflow) error
//Removes a Workflow object from database
WorkflowRemove(tx interface{}, id string) (*domain.Workflow, error)
//Returns a list of all the Workflows available in database
WorkflowList(tx interface{}) ([]domain.Workflow, error)
//Processes a grid query of Workflow objects
WorkflowGrid(tx interface{}, grid *tecgrid.NgGrid) error
//Checks for duplicated steps for a given status
WorkflowStepDups(tx interface{}, step *domain.WorkflowStep) error
WorkflowStepLoad(tx interface{}, id string) (*domain.WorkflowStep, error)
//Retrieves a list of all the WorkflowSteps related with a given Workflow object
WorkflowSteps(tx interface{}, workflow *domain.Workflow) ([]domain.WorkflowStep, error)
//Creates a new WorkflowStep object in database
WorkflowStepCreate(tx interface{}, step *domain.WorkflowStep) error
//Updates a WorkflowStep object in database
WorkflowStepUpdate(tx interface{}, step *domain.WorkflowStep) error
//Removes a WorkflowStep object from database
WorkflowStepRemove(tx interface{}, id string) (*domain.WorkflowStep, error)
//Returns a list of all the WorkflowSteps that can be applied for a given status
WorkflowStepAvailableStatus(tx interface{}, workflow *domain.Workflow, prevStatus *domain.Status) ([]domain.WorkflowStep, error)
//Returns a list of all the WorkflowSteps that can be applied for a given status and a given
//user, based on his permissions
WorkflowStepAvailableUser(tx interface{}, workflow *domain.Workflow, prevStatus *domain.Status) ([]domain.WorkflowStep, error)
//Loads a WorkflowStep member along with its inner objects (groups and users)
WorkflowStepMemberLoad(tx interface{}, item *domain.WorkflowStepMember) (*domain.WorkflowStepMember, error)
//Returns a list of all the groups that are related with a WorkflowStep
WorkflowStepMemberGroups(tx interface{}, item *domain.WorkflowStep) (selected []domain.Group, unselected []domain.Group, err error)
//Returns a list of all the users that are related with a WorkflowStep
WorkflowStepMemberUsers(tx interface{}, item *domain.WorkflowStep) (selected []domain.User, unselected []domain.User, err error)
//Adds a group or user to a WorkflowStep
WorkflowStepMemberAdd(tx interface{}, item *domain.WorkflowStepMember) error
//Removes a group or user from a WorkflowStep
WorkflowStepMemberRemove(tx interface{}, item *domain.WorkflowStepMember) error
//Returns all the members (users and groups) for a given WorkflowStep
WorkflowStepMembers(tx interface{}, item *domain.WorkflowStep) ([]domain.WorkflowStepMember, error)
WorkflowCreateMeta(tx interface{}, item *domain.Workflow) (*WorkflowMeta, error)
}
type User ¶
type User interface {
AccountDb() Account
SetAccountDb(item *Account)
//Counts the number of sys admin users that are active in database
CountSystemAdministrators(tx interface{}) (int64, error)
//Creates a new user in database
Create(tx interface{}, item *domain.User) error
//Loads an user and inner objects
Load(tx interface{}, id string) (*domain.User, error)
//Removes an user from database
Remove(tx interface{}, id string) (*domain.User, error)
//Updates an user in database
Update(tx interface{}, item *domain.User) error
//Returns a list of all the users in database
List(tx interface{}) ([]domain.User, error)
//Processes a grid query of User objects
Grid(tx interface{}, grid *tecgrid.NgGrid) error
//Creates a new group of users
GroupCreate(tx interface{}, item *domain.Group) (err error)
//Loads a group from database
GroupLoad(tx interface{}, id string) (item *domain.Group, err error)
//Removes a group from database
GroupRemove(tx interface{}, id string) (item *domain.Group, err error)
//Updates a group in database
GroupUpdate(tx interface{}, item *domain.Group) (err error)
//Returns a list of all the groups in database
GroupList(tx interface{}) (items []domain.Group, err error)
//Processes a grid query of groups in database
GroupGrid(tx interface{}, grid *tecgrid.NgGrid) (err error)
//Return the selected and unselected groups for a given User object
UserGroupListGroups(tx interface{}, u *domain.User) (selected []domain.Group, unselected []domain.Group, err error)
//Returns the selected and unselected users for a given Group object
UserGroupListUsers(tx interface{}, g *domain.Group) (selected []domain.User, unselected []domain.User, err error)
//Adds an User to a Group or vice versa
UserGroupAdd(tx interface{}, u *domain.UserGroup) error
//Removes an User to a Group
UserGroupRemove(tx interface{}, u *domain.UserGroup) error
//Returns true if the user is a member of the group
UserGroupIsMember(tx interface{}, group *domain.Group, user *domain.User) (ok bool, err error)
//Creates a new role in database
RoleCreate(tx interface{}, item *domain.Role) error
//Updates a role in database
RoleUpdate(tx interface{}, item *domain.Role) error
//Loads a role from database
RoleLoad(tx interface{}, id string) (*domain.Role, error)
//Returns a list of roles from database
RoleList(tx interface{}) ([]domain.Role, error)
//Removes a role from database
RoleRemove(tx interface{}, id string) (*domain.Role, error)
//Processes a grid query of roles
RoleGrid(tx interface{}, grid *tecgrid.NgGrid) error
}
type WorkflowMeta ¶
Click to show internal directories.
Click to hide internal directories.