Feat: finish putImageAliases
This commit is contained in:
@@ -42,26 +42,34 @@ func (self *BunDatabase) UpdateRefreshToken(
|
||||
ret := models.Session{
|
||||
UserId: userId,
|
||||
}
|
||||
err := self.db.NewSelect().
|
||||
Model(&ret).
|
||||
WherePK().
|
||||
Scan(ctx)
|
||||
if err != nil {
|
||||
return models.Session{}, err
|
||||
}
|
||||
|
||||
if err := ret.RotateRefreshToken(); err != nil {
|
||||
tracing.Logger.Ctx(ctx).
|
||||
Error("failed to rotate refresh token",
|
||||
zap.Error(err))
|
||||
return models.Session{}, err
|
||||
}
|
||||
err := self.db.RunInTx(ctx, nil, func(ctx context.Context, tx bun.Tx) error {
|
||||
err := self.db.NewSelect().
|
||||
Model(&ret).
|
||||
WherePK().
|
||||
Scan(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = self.db.NewUpdate().
|
||||
Model((*models.Session)(nil)).
|
||||
Set("refresh_token = ?", ret.RefreshToken).
|
||||
Where("user_id = ?", userId).
|
||||
Exec(ctx)
|
||||
if err := ret.RotateRefreshToken(); err != nil {
|
||||
tracing.Logger.Ctx(ctx).
|
||||
Error("failed to rotate refresh token",
|
||||
zap.Error(err))
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = self.db.NewUpdate().
|
||||
Model((*models.Session)(nil)).
|
||||
Set("refresh_token = ?", ret.RefreshToken).
|
||||
Where("user_id = ?", userId).
|
||||
Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
return models.Session{}, err
|
||||
}
|
||||
@@ -104,3 +112,75 @@ func (self *BunDatabase) GetAliases(
|
||||
}
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
func (self *BunDatabase) GetImages(
|
||||
ctx context.Context,
|
||||
imageIds []int64,
|
||||
aliasIds []int64,
|
||||
) ([]models.Image, error) {
|
||||
if len(aliasIds) > 0 {
|
||||
var rels []models.AliasImage
|
||||
err := self.db.NewSelect().
|
||||
Model(&rels).
|
||||
Where("alias_id IN (?)", bun.In(aliasIds)).
|
||||
Scan(ctx)
|
||||
if err != nil {
|
||||
return []models.Image{}, err
|
||||
}
|
||||
for _, rel := range rels {
|
||||
imageIds = append(imageIds, rel.ImageId)
|
||||
}
|
||||
}
|
||||
|
||||
var ret []models.Image
|
||||
if len(imageIds) > 0 {
|
||||
err := self.db.NewSelect().
|
||||
Model(&ret).
|
||||
Where("image_id IN (?)", bun.In(imageIds)).
|
||||
Relation("Aliases").
|
||||
Scan(ctx)
|
||||
if err != nil {
|
||||
return []models.Image{}, err
|
||||
}
|
||||
}
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
func (self *BunDatabase) UpdateAliases(
|
||||
ctx context.Context,
|
||||
imageId int64,
|
||||
aliasNames []string,
|
||||
) error {
|
||||
return self.db.RunInTx(ctx, nil, func(ctx context.Context, tx bun.Tx) error {
|
||||
var aliases []models.Alias
|
||||
for _, ali := range aliasNames {
|
||||
aliases = append(aliases, models.Alias{
|
||||
Name: ali,
|
||||
})
|
||||
}
|
||||
_, err := self.db.NewInsert().
|
||||
Model(&aliases).
|
||||
On("CONFLICT (id) DO NOTHING").
|
||||
Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var rels []models.AliasImage
|
||||
for _, alias := range aliases {
|
||||
rels = append(rels, models.AliasImage{
|
||||
AliasId: alias.Id,
|
||||
ImageId: imageId,
|
||||
})
|
||||
}
|
||||
_, err = self.db.NewInsert().
|
||||
Model(&rels).
|
||||
On("CONFLICT (alias_id, image_id) DO NOTHING").
|
||||
Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user