/
user.go
45 lines (38 loc) · 1.66 KB
/
user.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package pgsql
import (
"github.com/go-pg/pg/v9/orm"
andro "github.com/soldevx/kuiper/andro/pkg/utl/model"
)
// User represents the client for user table
type User struct{}
// View returns single user by ID
func (u User) View(db orm.DB, id int) (andro.User, error) {
var user andro.User
sql := `SELECT "user".*, "role"."id" AS "role__id", "role"."access_level" AS "role__access_level", "role"."name" AS "role__name"
FROM "users" AS "user" LEFT JOIN "roles" AS "role" ON "role"."id" = "user"."role_id"
WHERE ("user"."id" = ? and deleted_at is null)`
_, err := db.QueryOne(&user, sql, id)
return user, err
}
// FindByUsername queries for single user by username
func (u User) FindByUsername(db orm.DB, uname string) (andro.User, error) {
var user andro.User
sql := `SELECT "user".*, "role"."id" AS "role__id", "role"."access_level" AS "role__access_level", "role"."name" AS "role__name"
FROM "users" AS "user" LEFT JOIN "roles" AS "role" ON "role"."id" = "user"."role_id"
WHERE ("user"."username" = ? and deleted_at is null)`
_, err := db.QueryOne(&user, sql, uname)
return user, err
}
// FindByToken queries for single user by token
func (u User) FindByToken(db orm.DB, token string) (andro.User, error) {
var user andro.User
sql := `SELECT "user".*, "role"."id" AS "role__id", "role"."access_level" AS "role__access_level", "role"."name" AS "role__name"
FROM "users" AS "user" LEFT JOIN "roles" AS "role" ON "role"."id" = "user"."role_id"
WHERE ("user"."token" = ? and deleted_at is null)`
_, err := db.QueryOne(&user, sql, token)
return user, err
}
// Update updates user's info
func (u User) Update(db orm.DB, user andro.User) error {
return db.Update(&user)
}