BREAKING CHANGE: V2 of thr SDK #12

Merged
fenpaws merged 124 commits from develop/postgresql into main 2024-07-01 20:46:28 +00:00
4 changed files with 21 additions and 57 deletions
Showing only changes of commit bb7cb23c2a - Show all commits

View File

@ -32,60 +32,42 @@ func CreateAnthrovePostNode(ctx context.Context, db *gorm.DB, anthrovePost *mode
func GetPostByAnthroveID(ctx context.Context, db *gorm.DB, anthrovePostID string) (*models.Post, error) {
if anthrovePostID == "" {
return false, fmt.Errorf("anthrovePostID is required")
return nil, fmt.Errorf("anthrovePostID is required")
}
return executeCheckQuery(ctx, db, "id = ?", string(anthrovePostID))
var post models.Post
err := db.WithContext(ctx).First(&post, "id = ?", anthrovePostID).Error
if err != nil {
return nil, err
}
return &post, nil
}
func GetPostBySourceURL(ctx context.Context, db *gorm.DB, sourceURL string) (*models.Post, bool, error) {
func GetPostBySourceURL(ctx context.Context, db *gorm.DB, sourceURL string) (*models.Post, error) {
var post models.Post
err := db.WithContext(ctx).Raw(`SELECT p.id AS id, p.rating as rating FROM "Post" AS p INNER JOIN "PostReference" AS pr ON p.id = pr.post_id AND pr.url = $1 LIMIT 1`, sourceURL).First(&post).Error
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, false, nil
return nil, nil
}
return nil, false, err
return nil, err
}
var post models.Post
err = db.WithContext(ctx).First(&post, "id = ?", postRef.PostID).Error
if err != nil {
return nil, false, err
}
pgPost := graphModels.AnthrovePost{
PostID: models.AnthrovePostID(post.ID),
Rating: post.Rating,
}
//TODO Now test it! :D
// Naaa
// D:
return &pgPost, true, nil
return &post, nil
}
func GetPostBySourceID(ctx context.Context, db *gorm.DB, sourceID string) (*models.Post, error) {
return executeCheckQuery(ctx, db, "source_id = ?", sourceID)
}
var post models.Post
fenpaws marked this conversation as resolved Outdated

didn't we call the sourceURL not postUrl or so?
Something, so we don't mix it up with domainUrl or sourceDomain...

didn't we call the sourceURL not postUrl or so? Something, so we don't mix it up with domainUrl or sourceDomain...
err := db.WithContext(ctx).Raw(`SELECT p.id AS id, p.rating as rating FROM "Post" AS p INNER JOIN "PostReference" AS pr ON p.id = pr.post_id AND pr.source_id = $1 LIMIT 1`, sourceID).First(&post).Error
func executeCheckQuery(ctx context.Context, db *gorm.DB, query string, args ...interface{}) (bool, error) {
var count int64
err := db.WithContext(ctx).Model(&models.Post{}).Where(query, args...).Count(&count).Error
if err != nil {
return false, err
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil
}
return nil, err
}
exists := count > 0
log.WithFields(log.Fields{
"query": query,
"args": args,
"exists": exists,
}).Trace("database: executed check query")
return exists, nil
return &post, nil
}

View File

@ -30,12 +30,6 @@ func CreateTagNodeWitRelation(ctx context.Context, db *gorm.DB, PostID models.An
return fmt.Errorf("PostID is empty")
}
resultTag := db.WithContext(ctx).Where(tag).FirstOrCreate(tag)
if resultTag.Error != nil {
return resultTag.Error
}
pgPost := models.Post{
BaseModel: models.BaseModel{
ID: string(PostID),

View File

@ -37,19 +37,6 @@ func CreateUserNodeWithSourceRelation(ctx context.Context, db *gorm.DB, anthrove
return fmt.Errorf("anthroveUserID cannot be empty")
}
user := models.User{
BaseModel: models.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 := models.Source{
Domain: sourceDomain,
}
@ -62,7 +49,7 @@ func CreateUserNodeWithSourceRelation(ctx context.Context, db *gorm.DB, anthrove
}
userSource := models.UserSource{
UserID: user.ID,
User: models.User{BaseModel: models.BaseModel{ID: string(anthroveUserID)}},
SourceID: source.ID,
AccountUsername: username,
AccountID: userID,

View File

@ -1,6 +1,7 @@
package models
type UserSource struct {
User User `gorm:"foreignKey:ID;references:UserID"`
UserID string `gorm:"primaryKey"`
Source Source `gorm:"foreignKey:ID;references:SourceID"`
SourceID string `gorm:"primaryKey"`