add some methods repo in amo repo
This commit is contained in:
parent
24b7942061
commit
b36797b22d
@ -675,7 +675,7 @@ DELETE FROM tokens WHERE AccountID = $1;
|
||||
-- name: SoftDeleteAccount :exec
|
||||
UPDATE users SET Deleted = TRUE WHERE AccountID = $1;
|
||||
|
||||
-- name: GetCurrentAccount :exec
|
||||
-- name: GetCurrentAccount :one
|
||||
SELECT * FROM users WHERE AccountID = $1;
|
||||
|
||||
-- name: CheckUsers :exec
|
||||
|
@ -52,7 +52,7 @@ type UserListPipelinesResp struct {
|
||||
|
||||
type UserListResp struct {
|
||||
/* - общее количество юзеров, которые у нас закешированы для этого пользователя*/
|
||||
Count int `json:"count"`
|
||||
Count int64 `json:"count"`
|
||||
/* - список юзеров, которые были закешированы нашим сервисом*/
|
||||
Items []User `json:"items"`
|
||||
}
|
||||
|
@ -4,8 +4,10 @@ import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"encoding/json"
|
||||
"github.com/sqlc-dev/pqtype"
|
||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal/sqlcgen"
|
||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
|
||||
"time"
|
||||
)
|
||||
|
||||
type AmoRepository struct {
|
||||
@ -43,7 +45,7 @@ func (r *AmoRepository) GettingUserWithPagination(ctx context.Context, req *mode
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var count int64
|
||||
var users []model.User
|
||||
for _, row := range rows {
|
||||
user := model.User{
|
||||
@ -58,6 +60,7 @@ func (r *AmoRepository) GettingUserWithPagination(ctx context.Context, req *mode
|
||||
Amouserid: row.Amouserid,
|
||||
Country: row.Country,
|
||||
}
|
||||
count = row.TotalCount
|
||||
var group []model.UserGroups
|
||||
if !row.Group.Valid {
|
||||
err := json.Unmarshal(row.Group.RawMessage, &group)
|
||||
@ -70,24 +73,70 @@ func (r *AmoRepository) GettingUserWithPagination(ctx context.Context, req *mode
|
||||
users = append(users, user)
|
||||
}
|
||||
|
||||
resp := model.UserListResp{}
|
||||
resp := model.UserListResp{
|
||||
Count: count,
|
||||
Items: users,
|
||||
}
|
||||
|
||||
return users, nil
|
||||
return &resp, nil
|
||||
}
|
||||
|
||||
func (r *AmoRepository) SoftDeleteAccount(ctx context.Context, accountID string) error {
|
||||
err := r.queries.SoftDeleteAccount(ctx, accountID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *AmoRepository) GetCurrentAccount(ctx context.Context, accountID string) (*model.User, error) {
|
||||
row, err := r.queries.GetCurrentAccount(ctx, accountID)
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (r *AmoRepository) CreateAccount(ctx context.Context, accountID string, userInfo model.User) error {
|
||||
group, err := json.Marshal(userInfo.Group)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = r.queries.CreateAmoAccount(ctx, sqlcgen.CreateAmoAccountParams{
|
||||
Accountid: accountID,
|
||||
Amoid: userInfo.AmoID,
|
||||
Name: userInfo.Name,
|
||||
Email: userInfo.Email,
|
||||
Role: userInfo.Role,
|
||||
Group: pqtype.NullRawMessage{RawMessage: group, Valid: len(group) > 0},
|
||||
Createdat: sql.NullTime{Time: time.Now(), Valid: true},
|
||||
Subdomain: userInfo.Subdomain,
|
||||
Amouserid: userInfo.Amouserid,
|
||||
Country: userInfo.Country,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *AmoRepository) CheckUsers(ctx context.Context, amouserid int, user model.User) error {
|
||||
func (r *AmoRepository) CheckUsers(ctx context.Context, amouserid int32, user model.User) error {
|
||||
group, err := json.Marshal(user.Group)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = r.queries.CheckUsers(ctx, sqlcgen.CheckUsersParams{
|
||||
Amoid: amouserid,
|
||||
Name: user.Name,
|
||||
Email: user.Email,
|
||||
Role: user.Role,
|
||||
Group: pqtype.NullRawMessage{RawMessage: group, Valid: len(group) > 0},
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@ -95,24 +144,88 @@ func (r *AmoRepository) CheckUsers(ctx context.Context, amouserid int, user mode
|
||||
// методы webhook
|
||||
|
||||
func (r *AmoRepository) WebhookCreate(ctx context.Context, tokens model.Token) error {
|
||||
err := r.queries.CreateWebHook(ctx, sqlcgen.CreateWebHookParams{
|
||||
Accountid: tokens.AccountID,
|
||||
Refreshtoken: tokens.RefreshToken,
|
||||
Accesstoken: tokens.AccessToken,
|
||||
Authcode: tokens.AuthCode,
|
||||
Expiration: time.Unix(tokens.Expiration, 0),
|
||||
Createdat: sql.NullTime{Time: time.Unix(tokens.CreatedAt, 0), Valid: true},
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *AmoRepository) WebhookUpdate(ctx context.Context, tokens model.Token) error {
|
||||
err := r.queries.WebhookUpdate(ctx, sqlcgen.WebhookUpdateParams{
|
||||
Accountid: tokens.AccountID,
|
||||
Accesstoken: tokens.AccessToken,
|
||||
Refreshtoken: tokens.RefreshToken,
|
||||
Expiration: time.Unix(tokens.Expiration, 0),
|
||||
Createdat: sql.NullTime{Time: time.Unix(tokens.CreatedAt, 0), Valid: true},
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// воркер запускается каждые 5 минут, поэтомму ищем токены котторые исекают менее чем через 10 минут отдаем их на обноление
|
||||
func (r *AmoRepository) CheckExpired(ctx context.Context) ([]model.Token, error) {
|
||||
return nil, nil
|
||||
rows, err := r.queries.CheckExpired(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tokens []model.Token
|
||||
|
||||
for _, row := range rows {
|
||||
token := model.Token{
|
||||
AccountID: row.Accountid,
|
||||
AccessToken: row.Accesstoken,
|
||||
RefreshToken: row.Refreshtoken,
|
||||
AuthCode: row.Authcode,
|
||||
Expiration: row.Expiration.Unix(),
|
||||
CreatedAt: row.Createdat.Time.Unix(),
|
||||
}
|
||||
|
||||
tokens = append(tokens, token)
|
||||
}
|
||||
|
||||
return tokens, nil
|
||||
}
|
||||
|
||||
func (r *AmoRepository) GetAllTokens(ctx context.Context) ([]model.Token, error) {
|
||||
return nil, nil
|
||||
rows, err := r.queries.GetAllTokens(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tokens []model.Token
|
||||
|
||||
for _, row := range rows {
|
||||
token := model.Token{
|
||||
AccountID: row.Accountid,
|
||||
AccessToken: row.Accesstoken,
|
||||
RefreshToken: row.Refreshtoken,
|
||||
AuthCode: row.Authcode,
|
||||
Expiration: row.Expiration.Unix(),
|
||||
CreatedAt: row.Createdat.Time.Unix(),
|
||||
}
|
||||
|
||||
tokens = append(tokens, token)
|
||||
}
|
||||
|
||||
return tokens, nil
|
||||
}
|
||||
|
||||
func (r *AmoRepository) WebhookDelete(ctx context.Context) error {
|
||||
//TODO:IMPLEMENT ME
|
||||
|
||||
return nil
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user