mirror of
https://github.com/Walter-Sparrow/lunar-tear.git
synced 2026-07-02 05:43:41 +03:00
167 lines
4.5 KiB
Go
167 lines
4.5 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
|
|
pb "lunar-tear/server/gen/proto"
|
|
"lunar-tear/server/internal/store"
|
|
"lunar-tear/server/internal/userdata"
|
|
|
|
"google.golang.org/protobuf/types/known/emptypb"
|
|
)
|
|
|
|
type DataServiceServer struct {
|
|
pb.UnimplementedDataServiceServer
|
|
users store.UserRepository
|
|
sessions store.SessionRepository
|
|
}
|
|
|
|
func NewDataServiceServer(users store.UserRepository, sessions store.SessionRepository) *DataServiceServer {
|
|
return &DataServiceServer{users: users, sessions: sessions}
|
|
}
|
|
|
|
func (s *DataServiceServer) GetLatestMasterDataVersion(ctx context.Context, _ *emptypb.Empty) (*pb.MasterDataGetLatestVersionResponse, error) {
|
|
log.Printf("[DataService] GetLatestMasterDataVersion")
|
|
return &pb.MasterDataGetLatestVersionResponse{
|
|
LatestMasterDataVersion: "20240404193219",
|
|
}, nil
|
|
}
|
|
|
|
func (s *DataServiceServer) GetUserDataNameV2(ctx context.Context, _ *emptypb.Empty) (*pb.UserDataGetNameResponseV2, error) {
|
|
log.Printf("[DataService] GetUserDataNameV2")
|
|
return &pb.UserDataGetNameResponseV2{
|
|
TableNameList: []*pb.TableNameList{
|
|
{TableName: defaultTableNames()},
|
|
},
|
|
}, nil
|
|
}
|
|
|
|
func (s *DataServiceServer) GetUserData(ctx context.Context, req *pb.UserDataGetRequest) (*pb.UserDataGetResponse, error) {
|
|
log.Printf("[DataService] GetUserData: tables=%v", req.TableName)
|
|
|
|
userId := currentUserId(ctx, s.users, s.sessions)
|
|
user, err := s.users.SnapshotUser(userId)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("snapshot user: %w", err)
|
|
}
|
|
|
|
defaults := userdata.FirstEntranceClientTableMap(user)
|
|
result := userdata.SelectTables(defaults, req.TableName)
|
|
return &pb.UserDataGetResponse{
|
|
UserDataJson: result,
|
|
}, nil
|
|
}
|
|
|
|
func defaultTableNames() []string {
|
|
return []string{
|
|
"IUser",
|
|
"IUserApple",
|
|
"IUserAutoSaleSettingDetail",
|
|
"IUserBeginnerCampaign",
|
|
"IUserBigHuntMaxScore",
|
|
"IUserBigHuntProgressStatus",
|
|
"IUserBigHuntScheduleMaxScore",
|
|
"IUserBigHuntStatus",
|
|
"IUserBigHuntWeeklyMaxScore",
|
|
"IUserBigHuntWeeklyStatus",
|
|
"IUserCageOrnamentReward",
|
|
"IUserCharacter",
|
|
"IUserCharacterBoard",
|
|
"IUserCharacterBoardAbility",
|
|
"IUserCharacterBoardCompleteReward",
|
|
"IUserCharacterBoardStatusUp",
|
|
"IUserCharacterCostumeLevelBonus",
|
|
"IUserCharacterRebirth",
|
|
"IUserCharacterViewerField",
|
|
"IUserComebackCampaign",
|
|
"IUserCompanion",
|
|
"IUserConsumableItem",
|
|
"IUserContentsStory",
|
|
"IUserCostume",
|
|
"IUserCostumeActiveSkill",
|
|
"IUserCostumeAwakenStatusUp",
|
|
"IUserCostumeLevelBonusReleaseStatus",
|
|
"IUserCostumeLotteryEffect",
|
|
"IUserCostumeLotteryEffectAbility",
|
|
"IUserCostumeLotteryEffectPending",
|
|
"IUserCostumeLotteryEffectStatusUp",
|
|
"IUserDeck",
|
|
"IUserDeckCharacter",
|
|
"IUserDeckCharacterDressupCostume",
|
|
"IUserDeckLimitContentRestricted",
|
|
"IUserDeckPartsGroup",
|
|
"IUserDeckSubWeaponGroup",
|
|
"IUserDeckTypeNote",
|
|
"IUserDokan",
|
|
"IUserEventQuestDailyGroupCompleteReward",
|
|
"IUserEventQuestGuerrillaFreeOpen",
|
|
"IUserEventQuestLabyrinthSeason",
|
|
"IUserEventQuestLabyrinthStage",
|
|
"IUserEventQuestProgressStatus",
|
|
"IUserEventQuestTowerAccumulationReward",
|
|
"IUserExplore",
|
|
"IUserExploreScore",
|
|
"IUserExtraQuestProgressStatus",
|
|
"IUserFacebook",
|
|
"IUserGem",
|
|
"IUserGimmick",
|
|
"IUserGimmickOrnamentProgress",
|
|
"IUserGimmickSequence",
|
|
"IUserGimmickUnlock",
|
|
"IUserImportantItem",
|
|
"IUserLimitedOpen",
|
|
// "IUserLogin",
|
|
"IUserLoginBonus",
|
|
"IUserMainQuestFlowStatus",
|
|
"IUserMainQuestMainFlowStatus",
|
|
"IUserMainQuestProgressStatus",
|
|
"IUserMainQuestReplayFlowStatus",
|
|
"IUserMainQuestSeasonRoute",
|
|
"IUserMaterial",
|
|
"IUserMission",
|
|
"IUserMissionCompletionProgress",
|
|
"IUserMissionPassPoint",
|
|
"IUserMovie",
|
|
"IUserNaviCutIn",
|
|
"IUserOmikuji",
|
|
"IUserParts",
|
|
"IUserPartsGroupNote",
|
|
"IUserPartsPreset",
|
|
"IUserPartsPresetTag",
|
|
"IUserPartsStatusSub",
|
|
"IUserPortalCageStatus",
|
|
"IUserPossessionAutoConvert",
|
|
"IUserPremiumItem",
|
|
"IUserProfile",
|
|
"IUserPvpDefenseDeck",
|
|
"IUserPvpStatus",
|
|
"IUserPvpWeeklyResult",
|
|
"IUserQuest",
|
|
"IUserQuestAutoOrbit",
|
|
"IUserQuestLimitContentStatus",
|
|
"IUserQuestMission",
|
|
"IUserQuestReplayFlowRewardGroup",
|
|
"IUserQuestSceneChoice",
|
|
"IUserQuestSceneChoiceHistory",
|
|
// "IUserSetting",
|
|
"IUserShopItem",
|
|
"IUserShopReplaceable",
|
|
"IUserShopReplaceableLineup",
|
|
"IUserSideStoryQuest",
|
|
"IUserSideStoryQuestSceneProgressStatus",
|
|
"IUserStatus",
|
|
"IUserThought",
|
|
"IUserTripleDeck",
|
|
"IUserTutorialProgress",
|
|
"IUserWeapon",
|
|
"IUserWeaponAbility",
|
|
"IUserWeaponAwaken",
|
|
"IUserWeaponNote",
|
|
"IUserWeaponSkill",
|
|
"IUserWeaponStory",
|
|
"IUserWebviewPanelMission",
|
|
}
|
|
}
|