Skip to content

Commit

Permalink
feat: add ApplicationVersion
Browse files Browse the repository at this point in the history
  • Loading branch information
withchao committed Oct 30, 2024
1 parent 7b95c2c commit e495bc4
Show file tree
Hide file tree
Showing 10 changed files with 21 additions and 45 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ require (
github.com/gorilla/websocket v1.5.1
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
github.com/mitchellh/mapstructure v1.5.0
github.com/openimsdk/protocol v0.0.72-alpha.48
github.com/openimsdk/protocol v0.0.72-alpha.49
github.com/openimsdk/tools v0.0.50-alpha.16
github.com/pkg/errors v0.9.1 // indirect
github.com/prometheus/client_golang v1.18.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -319,8 +319,8 @@ github.com/onsi/gomega v1.25.0 h1:Vw7br2PCDYijJHSfBOWhov+8cAnUf8MfMaIOV323l6Y=
github.com/onsi/gomega v1.25.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM=
github.com/openimsdk/gomake v0.0.14-alpha.5 h1:VY9c5x515lTfmdhhPjMvR3BBRrRquAUCFsz7t7vbv7Y=
github.com/openimsdk/gomake v0.0.14-alpha.5/go.mod h1:PndCozNc2IsQIciyn9mvEblYWZwJmAI+06z94EY+csI=
github.com/openimsdk/protocol v0.0.72-alpha.48 h1:DVeT8Kej6OjB9bsxQ0q6FU160anwfPuVmAL/1J6VzqM=
github.com/openimsdk/protocol v0.0.72-alpha.48/go.mod h1:OZQA9FR55lseYoN2Ql1XAHYKHJGu7OMNkUbuekrKCM8=
github.com/openimsdk/protocol v0.0.72-alpha.49 h1:p2uDLLoVc8ONrwPkHTuhQUdXgSj2RPsCHmkvljC6swA=
github.com/openimsdk/protocol v0.0.72-alpha.49/go.mod h1:OZQA9FR55lseYoN2Ql1XAHYKHJGu7OMNkUbuekrKCM8=
github.com/openimsdk/tools v0.0.50-alpha.16 h1:bC1AQvJMuOHtZm8LZRvN8L5mH1Ws2VYdL+TLTs1iGSc=
github.com/openimsdk/tools v0.0.50-alpha.16/go.mod h1:h1cYmfyaVtgFbKmb1Cfsl8XwUOMTt8ubVUQrdGtsUh4=
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
Expand Down
1 change: 0 additions & 1 deletion internal/api/router.go
Original file line number Diff line number Diff line change
Expand Up @@ -298,5 +298,4 @@ var Whitelist = []string{
"/auth/get_admin_token",
"/auth/parse_token",
"/application/latest_version",
"/application/page_versions",
}
24 changes: 4 additions & 20 deletions internal/rpc/third/application.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,33 +36,17 @@ func (t *thirdServer) db2pbApplication(val *model.Application) *third.Applicatio
}
}

func (t *thirdServer) getLatestApplicationVersion(ctx context.Context, platform string, hot bool) (*third.ApplicationVersion, error) {
res, err := t.applicationDatabase.LatestVersion(ctx, platform, hot)
func (t *thirdServer) LatestApplicationVersion(ctx context.Context, req *third.LatestApplicationVersionReq) (*third.LatestApplicationVersionResp, error) {
res, err := t.applicationDatabase.LatestVersion(ctx, req.Platform)
if err == nil {
return t.db2pbApplication(res), nil
return &third.LatestApplicationVersionResp{Version: t.db2pbApplication(res)}, nil
} else if IsNotFound(err) {
return nil, nil
return &third.LatestApplicationVersionResp{}, nil
} else {
return nil, err
}
}

func (t *thirdServer) LatestApplicationVersion(ctx context.Context, req *third.LatestApplicationVersionReq) (*third.LatestApplicationVersionResp, error) {
var (
resp third.LatestApplicationVersionResp
err error
)
resp.Version, err = t.getLatestApplicationVersion(ctx, req.Platform, false)
if err != nil {
return nil, err
}
resp.Hot, err = t.getLatestApplicationVersion(ctx, req.Platform, true)
if err != nil {
return nil, err
}
return &resp, nil
}

func (t *thirdServer) AddApplicationVersion(ctx context.Context, req *third.AddApplicationVersionReq) (*third.AddApplicationVersionResp, error) {
if err := authverify.CheckAdmin(ctx, t.config.Share.IMAdminUserID); err != nil {
return nil, err
Expand Down
2 changes: 1 addition & 1 deletion pkg/common/storage/cache/application.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ import (
)

type ApplicationCache interface {
LatestVersion(ctx context.Context, platform string, hot bool) (*model.Application, error)
LatestVersion(ctx context.Context, platform string) (*model.Application, error)
DeleteCache(ctx context.Context, platforms []string) error
}
10 changes: 2 additions & 8 deletions pkg/common/storage/cache/cachekey/application.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,6 @@ const (
ApplicationLatestVersion = "APPLICATION_LATEST_VERSION:"
)

func GetApplicationLatestVersionKey(platform string, hot bool) string {
var hotStr string
if hot {
hotStr = "1:"
} else {
hotStr = "0:"
}
return ApplicationLatestVersion + hotStr + platform
func GetApplicationLatestVersionKey(platform string) string {
return ApplicationLatestVersion + platform
}
10 changes: 5 additions & 5 deletions pkg/common/storage/cache/redis/application.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,19 @@ type ApplicationRedisCache struct {
expireTime time.Duration
}

func (a *ApplicationRedisCache) LatestVersion(ctx context.Context, platform string, hot bool) (*model.Application, error) {
return getCache(ctx, a.rcClient, cachekey.GetApplicationLatestVersionKey(platform, hot), a.expireTime, func(ctx context.Context) (*model.Application, error) {
return a.db.LatestVersion(ctx, platform, hot)
func (a *ApplicationRedisCache) LatestVersion(ctx context.Context, platform string) (*model.Application, error) {
return getCache(ctx, a.rcClient, cachekey.GetApplicationLatestVersionKey(platform), a.expireTime, func(ctx context.Context) (*model.Application, error) {
return a.db.LatestVersion(ctx, platform)
})
}

func (a *ApplicationRedisCache) DeleteCache(ctx context.Context, platforms []string) error {
if len(platforms) == 0 {
return nil
}
keys := make([]string, 0, len(platforms)*2)
keys := make([]string, 0, len(platforms))
for _, platform := range platforms {
keys = append(keys, cachekey.GetApplicationLatestVersionKey(platform, true), cachekey.GetApplicationLatestVersionKey(platform, false))
keys = append(keys, cachekey.GetApplicationLatestVersionKey(platform))
}
return a.deleter.ExecDelWithKeys(ctx, keys)
}
6 changes: 3 additions & 3 deletions pkg/common/storage/controller/application.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
)

type ApplicationDatabase interface {
LatestVersion(ctx context.Context, platform string, hot bool) (*model.Application, error)
LatestVersion(ctx context.Context, platform string) (*model.Application, error)
AddVersion(ctx context.Context, val *model.Application) error
UpdateVersion(ctx context.Context, id primitive.ObjectID, update map[string]any) error
DeleteVersion(ctx context.Context, id []primitive.ObjectID) error
Expand All @@ -26,8 +26,8 @@ type applicationDatabase struct {
cache cache.ApplicationCache
}

func (a *applicationDatabase) LatestVersion(ctx context.Context, platform string, hot bool) (*model.Application, error) {
return a.cache.LatestVersion(ctx, platform, hot)
func (a *applicationDatabase) LatestVersion(ctx context.Context, platform string) (*model.Application, error) {
return a.cache.LatestVersion(ctx, platform)
}

func (a *applicationDatabase) AddVersion(ctx context.Context, val *model.Application) error {
Expand Down
2 changes: 1 addition & 1 deletion pkg/common/storage/database/application.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
)

type Application interface {
LatestVersion(ctx context.Context, platform string, hot bool) (*model.Application, error)
LatestVersion(ctx context.Context, platform string) (*model.Application, error)
AddVersion(ctx context.Context, val *model.Application) error
UpdateVersion(ctx context.Context, id primitive.ObjectID, update map[string]any) error
DeleteVersion(ctx context.Context, id []primitive.ObjectID) error
Expand Down
5 changes: 2 additions & 3 deletions pkg/common/storage/database/mgo/application.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ func NewApplicationMgo(db *mongo.Database) (*ApplicationMgo, error) {
Keys: bson.D{
{Key: "platform", Value: 1},
{Key: "version", Value: 1},
{Key: "hot", Value: 1},
},
Options: options.Index().SetUnique(true),
},
Expand All @@ -42,8 +41,8 @@ func (a *ApplicationMgo) sort() any {
return bson.D{{"latest", -1}, {"_id", -1}}
}

func (a *ApplicationMgo) LatestVersion(ctx context.Context, platform string, hot bool) (*model.Application, error) {
return mongoutil.FindOne[*model.Application](ctx, a.coll, bson.M{"platform": platform, "hot": hot}, options.FindOne().SetSort(a.sort()))
func (a *ApplicationMgo) LatestVersion(ctx context.Context, platform string) (*model.Application, error) {
return mongoutil.FindOne[*model.Application](ctx, a.coll, bson.M{"platform": platform}, options.FindOne().SetSort(a.sort()))
}

func (a *ApplicationMgo) AddVersion(ctx context.Context, val *model.Application) error {
Expand Down

0 comments on commit e495bc4

Please sign in to comment.