This repository has been archived on 2024-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
otter-space-sdk/internal/postgres/user.go

80 lines
2.2 KiB
Go
Raw Normal View History

package postgres
import (
"context"
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
"git.dragse.it/anthrove/otter-space-sdk/pkg/models/pgModels"
log "github.com/sirupsen/logrus"
"gorm.io/gorm"
)
func CreateUserNodeWithSourceRelation(ctx context.Context, db *gorm.DB, anthroveUserID models.AnthroveUserID, sourceDomain string, userID string, username string) error {
user := pgModels.User{
BaseModel: pgModels.BaseModel{
ID: string(anthroveUserID),
},
}
if err := db.WithContext(ctx).FirstOrCreate(&user).Error; err != nil {
log.WithFields(log.Fields{
"anthrove_user_id": anthroveUserID,
}).Error("database: failed to find or create user")
return err
}
source := pgModels.Source{
Domain: sourceDomain,
}
if err := db.WithContext(ctx).Where(&source).First(&source).Error; err != nil {
log.WithFields(log.Fields{
"source_domain": sourceDomain,
}).Error("database: failed to find source")
return err
}
userSource := pgModels.UserSource{
UserID: user.ID,
SourceID: source.ID,
AccountUsername: username,
AccountID: userID,
}
if err := db.WithContext(ctx).Create(&userSource).Error; err != nil {
log.WithFields(log.Fields{
"anthrove_user_id": anthroveUserID,
"source_domain": sourceDomain,
"account_username": username,
"account_id": userID,
}).Error("database: failed to create user-source relationship")
return err
}
log.WithFields(log.Fields{
"anthrove_user_id": anthroveUserID,
"source_domain": sourceDomain,
"account_username": username,
"account_id": userID,
}).Trace("database: created user-source relationship")
return nil
}
func GetUserFavoritesCount(ctx context.Context, db *gorm.DB, anthroveUserID models.AnthroveUserID) (int64, error) {
var count int64
err := db.WithContext(ctx).Model(&pgModels.UserFavorite{}).Where("user_id = ?", string(anthroveUserID)).Count(&count).Error
if err != nil {
log.WithFields(log.Fields{
"anthrove_user_id": anthroveUserID,
}).Error("database: failed to get user favorites count")
return 0, err
}
log.WithFields(log.Fields{
"anthrove_user_id": anthroveUserID,
"anthrove_user_fav_count": count,
}).Trace("database: got user favorite count")
return count, nil
}