Agenda 是一个简单的 CLI 会议管理系统
由于 cmd 不便于编写 test 文件,故使用指定测试集,手动测试命令,目前并未出现 Bug,如遇 Bug,可以写 issue,我们会及时处理!
- 确保你已经安装 Golang 编程环境,如未安装,可参考 服务计算 | Golang 入门与配置
- 使用
go get github.com/7cthunder/agenda
下载项目 - 使用
go install github.com/7cthunder/agenda
进行编译安装
参考 cmd-design.md 手册,也可以使用 help
命令来提示输入信息。
entity
负责创建实体与操作实体,cmd
负责程序的逻辑
NewUser
创建一个User
实体并返回它的指针
NewUser func(name, password, email, phone string) *User
xxx.Getxxx()
及xxx.Setxxx(xxx)
用来获取或设置User
实体的属性
// Getxxx
GetName func() string
GetPassword func() string
GetEmail func() string
GetPhone func() string
// Setxxx
SetName func(newName string)
SetPassword func(newPassword string)
SetEmail func(newEmail string)
SetPhone func(newPhone string)
NewDate
创建一个Date
实体并返回它的指针
NewDate func(year, month, day, hour, minute int) *Date
xxx.Getxxx()
及xxx.Setxxx(xxx)
方法用来获取或设置Date
实体的属性
// Getxxx
GetYear func() int
GetMonth func() int
GetDay func() int
GetHour func() int
GetMinute func() int
// Setxxx
SetYear func(newYear int)
SetMonth func(newMonth int)
SetDay func(newDay int)
SetHour func(newHour int)
SetMinute func(newMinute int)
xxx.IsValid()
判断日期是否合法
IsValid func() bool
StringToDate()
及DateToString()
函数用来执行string
和Date
类型相互转化
//StringToDate convert a date string to a Date type
StringToDate func(dateString string) Date
// DateToString convert a Date struct to a string with format YYYY-MM-DD/HH:mm
DateToString func(date Date) string
因为没有操作符重载,所以设计xxx.IsEqual(xxx)
, xxx.IsGreater(xxx)
, xxx.IsLess(xxx)
, xxx.IsGreaterThanEqual(xxx)
及xxx.IsLessThanEqual(xxx)
方法来判断日期的前后关系
IsEqual func(date Date) bool
IsGreater func(date Date) bool
IsLess func(date Date) bool
IsGreaterThanEqual func(date Date) bool
IsLessThanEqual func(date Date) bool
NewMeeting
创建一个Meeting
实体并返回它的指针
NewMeeting func(sponsor string, title string, startTime Date, endTime Date, participators []string) *Meeting
xxx.Getxxx()
及xxx.Setxxx(xxx)
方法用来获取或设置Meeting
实体的属性
// Getxxx
GetSponsor func() string
GetTitle func() string
GetStartTime func() Date
GetEndTime func() Date
GetParticipators func() []string
// Setxxx
SetSponsor func(sponsor string)
SetTitle func(title string)
SetStartTime func(startTime Date)
SetEndTime func(endTime Date)
SetParticipators func(participators []string)
xxx.AddParticipator(xxx)
为meeting
实体添加指定参与者xxx
AddParticipator func(participator string)
xxx.RemoveParticipator(xxx)
为meeting
实体删除指定参与者xxx
RemoveParticipator func(participator string)
xxx.IsParticipator(xxx)
判断xxx是否在meeting
实体中
IsParticipator func(username string) bool
注意:Storage的方法如果调用成功会自动写入curUser.txt
, Meeting.json
和User.json
GetStorage()
函数获取一个单例storage
实体读写curUser.txt
, Meeting.json
和User.json
GetStorage func() *Storage
xxx.CreateUser(xxx)
方法用来创建新用户
CreateUser func(newUser User)
xxx.QueryUser(uFilter)
方法通过传入一个过滤器uFilter
来查询用户
// uFilter
type uFilter func(*User) bool
// QueryUser *
QueryUser func(filter uFilter) []User
xxx.UpdateUser(uFilter, uSwitcher)
方法通过传入一个过滤器uFilter
筛选用户并对它们使用uSwitcher
进行更新
type uFilter func(*User) bool
type uSwitcher func(*User)
// UpdateUser *
UpdateUser func(filter uFilter, switcher uSwitcher) int
xxx.DeleteUser(uFilter)
方法通过传入一个过滤器uFilter
筛选用户并删除
// uFilter
type uFilter func(*User) bool
// DeleteUser *
DeleteUser func(filter uFilter) int
xxx.CreateMeeting(xxx)
方法用来创建新会议并写入Meeting.json
CreateMeeting func(newMeeting Meeting)
xxx.QueryMeeting(mFilter)
方法通过传入一个过滤器mFilter
来查询会议
// mFilter
type mFilter func(*Meeting) bool
// QueryMeeting *
QueryMeeting func(filter mFilter) []Meeting
xxx.UpdateMeeting(mFilter, mSwitcher)
方法通过传入一个过滤器mFilter
筛选会议并对它们使用mSwitcher
进行更新
type mFilter func(*Meeting) bool
type mSwitcher func(*Meeting)
// UpdateMeeting *
UpdateMeeting func(filter mFilter, switcher mSwitcher) int
xxx.DeleteMeeting(mFilter)
方法通过传入一个过滤器mFilter
筛选会议并删除
// mFilter
type mFilter func(*Meeting) bool
// DeleteUser *
DeleteMeeting func(filter mFilter) int
xxx.GetCurUser()
获取现在登录的用户
SetCurUser func(u User)
xxx.SetCurUser(xxx)
设置当前登录用户
SetCurUser func(u User)
NewLogger
根据传入的前缀来创建新的logger
,其可同时写入log.txt
和显示在屏幕上
// NewLogger create a logger which write info on screen and in ./data/log.txt with specific prefix
NewLogger func(prefix string) *log.Logger