package mongo import ( "context" "finclip-app-manager/domain/entity" "finclip-app-manager/domain/repository" "finclip-app-manager/infrastructure/db/entity/mongo" mgo "gitlab.finogeeks.club/finclip-backend-v2/finclip-mgo" "gitlab.finogeeks.club/finclip-backend-v2/finclip-mgo/bson" ) var _ repository.IAppBuildInfoRepo = new(AppBuildInfoMongoRepo) type AppBuildInfoMongoRepo struct { } func NewAppBuildInfoMongoRepo() *AppBuildInfoMongoRepo { return &AppBuildInfoMongoRepo{} } func (a *AppBuildInfoMongoRepo) Insert(ctx context.Context, item entity.AppBuildInfo) error { mgoInfo := tr.CovertAppBuildInfoToMgo(&item) return appBuildInfoTable.Insert(ctx, mgoInfo) } func (a *AppBuildInfoMongoRepo) GetInfoById(ctx context.Context, id string) (*entity.AppBuildInfo, error) { filter := bson.M{"id": id} item := mongo.AppBuildInfo{} err := appBuildInfoTable.GetOne(ctx, filter, &item) if err != nil { return nil, err } return tr.CovertAppBuildInfoToEntity(&item), nil } func (a *AppBuildInfoMongoRepo) GetInfoByBuildInfoId(ctx context.Context, buildInfoId string) (*entity.AppBuildInfo, error) { filter := bson.M{"buildInfoId": buildInfoId} item := mongo.AppBuildInfo{} err := appBuildInfoTable.GetOne(ctx, filter, &item) if err != nil { return nil, err } return tr.CovertAppBuildInfoToEntity(&item), nil } func (a *AppBuildInfoMongoRepo) GetInfoByBuildId(ctx context.Context, id string) (*entity.AppBuildInfo, error) { filter := bson.M{"buildInfoId": id} item := mongo.AppBuildInfo{} err := appBuildInfoTable.GetOne(ctx, filter, &item) if err != nil { return nil, err } return tr.CovertAppBuildInfoToEntity(&item), nil } func (a *AppBuildInfoMongoRepo) GetLatestInfoByAppId(ctx context.Context, appId string) (*entity.AppBuildInfo, error) { filter := bson.M{"appId": appId} item := mongo.AppBuildInfo{} err := appBuildInfoTable.GetSortOne(ctx, filter, []string{"-created"}, &item) if err != nil { return nil, err } return tr.CovertAppBuildInfoToEntity(&item), nil } func (a *AppBuildInfoMongoRepo) GetTrialInfoByAppId(ctx context.Context, appId string) (*entity.AppBuildInfo, error) { filter := bson.M{"appId": appId, "source": entity.APP_BUILD_SOURCE_TRIAL} item := mongo.AppBuildInfo{} err := appBuildInfoTable.GetOne(ctx, filter, &item) if err != nil { return nil, err } return tr.CovertAppBuildInfoToEntity(&item), nil } func (a *AppBuildInfoMongoRepo) GetTrialInfoById(ctx context.Context, id string) (*entity.AppBuildInfo, error) { filter := bson.M{"id": id, "source": entity.APP_BUILD_SOURCE_TRIAL} item := mongo.AppBuildInfo{} err := appBuildInfoTable.GetOne(ctx, filter, &item) if err != nil { return nil, err } return tr.CovertAppBuildInfoToEntity(&item), nil } func (a *AppBuildInfoMongoRepo) AddTrial(ctx context.Context, id string) error { filter := bson.M{"id": id} update := bson.M{"$set": bson.M{"source": entity.APP_BUILD_SOURCE_TRIAL}} return appBuildInfoTable.UpdateOne(ctx, filter, update) } func (a *AppBuildInfoMongoRepo) CancelTrial(ctx context.Context, id string) error { filter := bson.M{"id": id} update := bson.M{"$set": bson.M{"source": entity.APP_BUILD_SOURCE_BUILD, "startParams.path_and_query": ""}} return appBuildInfoTable.UpdateOne(ctx, filter, update) } func (a *AppBuildInfoMongoRepo) UpdateTrialStartParams(ctx context.Context, id string, params entity.AppStartParams) error { filter := bson.M{"id": id} update := bson.M{"$set": bson.M{"startParams.path_and_query": params.PathAndQuery}} return appBuildInfoTable.UpdateOne(ctx, filter, update) } func (a *AppBuildInfoMongoRepo) UpdateTrialPath(ctx context.Context, id, path string) error { filter := bson.M{"id": id} update := bson.M{"$set": bson.M{"path": path}} return appBuildInfoTable.UpdateOne(ctx, filter, update) } func (a *AppBuildInfoMongoRepo) UpdateOneStatus(ctx context.Context, id string, status bool) error { filter := bson.M{"id": id} update := bson.M{"$set": bson.M{"status": status}} return appBuildInfoTable.UpdateOne(ctx, filter, update) } func (a *AppBuildInfoMongoRepo) GetList(ctx context.Context, appId string, pageNo, pageSize int) (int64, []entity.AppBuildInfo, error) { list := make([]mongo.AppBuildInfo, 0) filter := bson.M{"appId": appId} total, err := appBuildInfoTable.GetSome(ctx, filter, []string{"-created"}, pageSize, pageNo, &list) if err != nil { return 0, nil, err } result := make([]entity.AppBuildInfo, 0) for _, v := range list { temp := v result = append(result, *tr.CovertAppBuildInfoToEntity(&temp)) } return int64(total), result, nil } func (a *AppBuildInfoMongoRepo) GetAll(ctx context.Context) ([]entity.AppBuildInfo, error) { list := make([]mongo.AppBuildInfo, 0) _, err := appBuildInfoTable.GetAll(ctx, bson.M{}, []string{}, &list) if err != nil { return nil, err } result := make([]entity.AppBuildInfo, 0) for _, v := range list { temp := v result = append(result, *tr.CovertAppBuildInfoToEntity(&temp)) } return result, nil } func (a *AppBuildInfoMongoRepo) GetAppBuilds(ctx context.Context, groupID, appId string, pageSize, pageNo int) (int64, []entity.AppBuildInfo, error) { list := make([]mongo.AppBuildInfo, 0) filter := bson.M{"appId": appId, "groupId": groupID} total, err := appBuildInfoTable.GetSome(ctx, filter, []string{"-created"}, pageSize, pageNo, &list) if err != nil { return 0, nil, err } result := make([]entity.AppBuildInfo, 0) for _, v := range list { temp := v result = append(result, *tr.CovertAppBuildInfoToEntity(&temp)) } return int64(total), result, nil } func (a *AppBuildInfoMongoRepo) NotFound(err error) bool { return err == mgo.ErrNotFound }