models

package
v0.0.0-...-52be0da Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 30, 2017 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ModelVersionTeam     = 1
	ModelVersionTeamUser = 1
	ModelVersionTimer    = 1
	ModelVersionPass     = 1
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Pass

type Pass struct {
	ID           bson.ObjectId `json:"id" bson:"_id,omitempty"`
	Token        string        `json:"token" bson:"token"`
	TeamID       string        `json:"team_id" bson:"team_id"`
	ProjectID    string        `json:"project_id" bson:"project_id"`
	TeamUserID   string        `json:"team_user_id" bson:"team_user_id"`
	CreatedAt    time.Time     `json:"created_at" bson:"created_at"`
	ExpiresAt    time.Time     `json:"expires_at" bson:"expires_at"`
	ClaimedAt    *time.Time    `json:"claimed_at" bson:"claimed_at"`
	ModelVersion int           `json:"ver" bson:"ver"`
}

Pass - a one time login token that is used by frontend to get JWT from the backend

type Project

type Project struct {
	ID                  bson.ObjectId `json:"id" bson:"_id,omitempty"`
	ExternalProjectID   string        `json:"ext_id" bson:"ext_id"`
	ExternalProjectName string        `json:"ext_name" bson:"ext_name"`
	CreatedAt           time.Time     `json:"created_at" bson:"created_at"`
}

Project - is a project you can associate tasks with and tracks their time. It is embedded in Team

type SlackCustomCommand

type SlackCustomCommand struct {
	ID          int64
	Token       string `json:"token"`
	TeamID      string `json:"team_id"`
	TeamDomain  string `json:"team_domain"`
	ChannelID   string `json:"channel_id"`
	ChannelName string `json:"channel_name"`
	UserID      string `json:"user_id"`
	UserName    string `json:"user_name"`
	Command     string `json:"command"`
	SubCommand  string
	Text        string `json:"text"`
	ResponseURL string `json:"response_url"`
	CreatedAt   time.Time
}

SlackCustomCommand todo

type StartCommandReport

type StartCommandReport struct {
	Team                             *Team
	Project                          *Project
	TeamUser                         *TeamUser
	Pass                             *Pass
	StoppedTimer                     *Timer
	StartedTimer                     *Timer
	AlreadyStartedTimer              *Timer
	StoppedTaskTotalForToday         int
	StartedTaskTotalForToday         int
	AlreadyStartedTimerTotalForToday int
	Resumed                          bool
	UserTotalForToday                int
}

StartCommandInventory collect everything that StartCommand creates, modifies or touches This report instance will be sent to a UITheme to format a slack reply to the Start Command

type StatusCommandReport

type StatusCommandReport struct {
	Team                             *Team
	Project                          *Project
	TeamUser                         *TeamUser
	Pass                             *Pass
	Tasks                            []*TaskAggregation
	AlreadyStartedTimer              *Timer
	AlreadyStartedTimerTotalForToday int
	PeriodName                       string // `today`, `yesterday`, `MM-DD-YYYY`
	UserTotalForPeriod               int
}

type StopCommandReport

type StopCommandReport struct {
	Team                     *Team
	Project                  *Project
	TeamUser                 *TeamUser
	Pass                     *Pass
	StoppedTimer             *Timer
	StoppedTaskTotalForToday int
	UserTotalForToday        int
}

type TaskAggregation

type TaskAggregation struct {
	TaskHash            string `bson:"task_hash"`
	ProjectExternalName string `bson:"project_ext_name"`
	ProjectExternalID   string `bson:"project_ext_id"`
	Name                string `bson:"task_name"`
	Minutes             int    `bson:"minutes"`
}

type Team

type Team struct {
	ID bson.ObjectId `json:"id" bson:"_id,omitempty"`

	// slack channel ID or
	// skype group ID or
	// hipchat channel ID
	ExternalSystem   string               `json:"system" bson:"system"`
	ExternalTeamID   string               `json:"ext_id" bson:"ext_id"`
	ExternalTeamName string               `json:"ext_name" bson:"ext_name"`
	Projects         []*Project           `json:"projects" bson:"projects"`
	CreatedAt        time.Time            `json:"created_at" bson:"created_at"`
	SlackOAuth       *slack.OAuthResponse `json:"slack_oauth" bson:"slack_oauth"`
	ModelVersion     int                  `json:"ver" bson:"ver"`
}

Team represents a Slack team

type TeamUser

type TeamUser struct {
	ID               bson.ObjectId `json:"id" bson:"_id,omitempty"`
	TeamID           string        `json:"team_id" bson:"team_id"`
	SlackUserInfo    *slack.User   `json:"slack_user_info" bson:"slack_user_info"`
	ExternalUserID   string        `json:"ext_id" bson:"ext_id"`
	ExternalUserName string        `json:"ext_name" bson:"ext_name"`
	CreatedAt        time.Time     `json:"created_at" bson:"created_at"`
	ModelVersion     int           `json:"ver" bson:"ver"`
}

TeamUser represents a Slack user that belongs to a team. We not going to call it `User` because we may want to have admin users to administer stuff via UI etc

type TimeEdit

type TimeEdit struct {
	TeamUserID string    `json:"team_user_id" bson:"team_user_id"`
	CreatedAt  time.Time `json:"created_at" bson:"created_at"`
	Minutes    int       `json:"minutes" bson:"minutes"`
}

type Timer

type Timer struct {
	ID                  bson.ObjectId `json:"id" bson:"_id,omitempty"`
	TeamID              string        `json:"team_id" bson:"team_id"`
	ProjectID           string        `json:"project_id" bson:"project_id"`
	ProjectExternalName string        `json:"project_ext_name" bson:"project_ext_name"`
	ProjectExternalID   string        `json:"project_ext_id" bson:"project_ext_id"`
	TeamUserID          string        `json:"team_user_id" bson:"team_user_id"`
	TeamUserTZOffset    int           `json:"tz_offset" bson:"tz_offset"`
	TaskName            string        `json:"task_name" bson:"task_name"`
	TaskHash            string        `json:"task_hash" bson:"task_hash"`
	CreatedAt           time.Time     `json:"created_at" bson:"created_at"`
	FinishedAt          *time.Time    `json:"finished_at" bson:"finished_at"`
	Minutes             int           `json:"minutes" bson:"minutes"`
	ActualMinutes       int           `json:"actual_minutes" bson:"actual_minutes"`
	Edits               []*TimeEdit   `json:"edits" bson:"edits"`
	DeletedAt           *time.Time    `json:"deleted_at" bson:"deleted_at"`
	ModelVersion        int           `json:"ver" bson:"ver"`
}

Timer - a time record that has start and finish dates. Belongs to a slack user and a task

type UserStatisticsAggregation

type UserStatisticsAggregation struct {
	Day           int      `json:"day" bson:"day"`
	Minutes       int      `json:"minutes" bson:"minutes"`
	ProjectsNames []string `json:"projects_names" bson:"projects_names"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL