statping/types/user.go

51 lines
1.8 KiB
Go
Raw Normal View History

2018-12-04 05:57:11 +00:00
// Statping
2018-09-18 22:02:27 +00:00
// Copyright (C) 2018. Hunter Long and the project contributors
// Written by Hunter Long <info@socialeck.com> and the project contributors
//
2018-12-04 04:17:29 +00:00
// https://github.com/hunterlong/statping
2018-09-18 22:02:27 +00:00
//
// The licenses for most software and other practical works are designed
// to take away your freedom to share and change the works. By contrast,
// the GNU General Public License is intended to guarantee your freedom to
// share and change all versions of a program--to make sure it remains free
// software for all its users.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
package types
import (
"time"
)
2018-10-08 04:37:23 +00:00
// User is the main struct for Users
type User struct {
Id int64 `gorm:"primary_key;column:id" json:"id"`
2018-11-13 19:28:21 +00:00
Username string `gorm:"type:varchar(100);unique;column:username;" json:"username,omitempty"`
2018-11-16 08:34:22 +00:00
Password string `gorm:"column:password" json:"password,omitempty"`
2018-11-13 19:28:21 +00:00
Email string `gorm:"type:varchar(100);unique;column:email" json:"email,omitempty"`
ApiKey string `gorm:"column:api_key" json:"api_key,omitempty"`
2018-11-16 02:52:51 +00:00
ApiSecret string `gorm:"column:api_secret" json:"api_secret,omitempty"`
2018-11-13 19:28:21 +00:00
Admin NullBool `gorm:"column:administrator" json:"admin,omitempty"`
CreatedAt time.Time `gorm:"column:created_at" json:"created_at"`
UpdatedAt time.Time `gorm:"column:updated_at" json:"updated_at"`
UserInterface `gorm:"-" json:"-"`
}
2018-10-08 04:37:23 +00:00
// UserInterface interfaces the database functions
type UserInterface interface {
Create() (int64, error)
Update() error
Delete() error
}
// BeforeCreate for User will set CreatedAt to UTC
func (u *User) BeforeCreate() (err error) {
if u.CreatedAt.IsZero() {
u.CreatedAt = time.Now().UTC()
u.UpdatedAt = time.Now().UTC()
}
return
}