[뒤끝팁] 뒤끝의 유니크 ID, inDate 알아보기

안녕하세요, 개발자님! 함께 뛰는 게임 서버 뒤끝입니다😊

오늘 함께 알아볼 개념은 바로 뒤끝의 유니크 ID, inDate 입니다. 

inDate는 뒤끝의 기능을 활용하실 때, 가장 많이 만나게 되는 매개 변수인데요. 우편, 게임 정보 관리, 친구 요청 등 뒤끝의 많은 기능에 inDate라는 매개 변수가 공통으로 사용되곤 합니다.🤔 이 inDate라는 것은 도대체 무엇일까요?

궁금하신 분들을 위해 오늘은 inDate의 개념과 종류, 그리고 활용 예시를 소개드립니다.

목차

🚩 inDate란 무엇인가?

inDate의 정의

inDate는 뒤끝에서 사용되는 유니크 ID입니다.

inDate는 아래 예시와 같이 24자리의 날짜 형태로 이루어지는데요! 중복되지 않는다는 날짜의 특성 덕분에, inDate는 고유한 Key 값으로 사용됩니다. 즉 게임에서 유저나 길드, 그리고 우편 등 테이블의 row는 모두 각자의 inDate 값을 가짐으로써 서로 구분되는 것이죠😋

				
					2024-02-25T06:29:27.533Z
				
			

기본적으로 inDate 값은 해당 데이터가 생성된 날짜로 지정되기 때문에, 특정 데이터를 조회하기 위한 고유 값으로 활용될 뿐 아니라, 데이터 생성일 그 자체로도 사용이 가능합니다. 

예를 들어 어느 유저의 inDate 값이 2024-02-25T06:29:27.533Z라고 한다면, 해당 유저는 2024년 2월 25일 15시 29분에 가입한 유저로 식별할 수 있어요. (해당 값은 UTC 시간으로, +9를 해 주어야 한국 환산 시간이 됩니다!)

inDate의 종류

inDate는 가리키는 데이터가 유저냐, 게임 데이터냐, 우편이냐에 따라 그 종류가 구분됩니다.

아래는 타 유저의 데이터를 불러오는 함수인데요! 자세히 보시면 inDate 값이 두 개(inDate, owner_inDate)나 존재합니다. 같은 inDate인데 무언가 다르게 생겼죠😊 inDate는 게임 데이터를, owner_inDate는 유저 데이터를 가리키는 것입니다.

				
					// 타 유저의 데이터 불러오기
public BackendReturnObject GetOtherData(string tableName, string inDate, string owner_inDate);
				
			

그럼 본격적으로 inDate의 활용 예시를 알아보기 전, 뒤끝에서 사용되는 inDate의 종류를 소개해 드립니다. 기능 별로 사용되는 inDate가 모두 다르니, 참고해 주세요.

각 inDate에 대한 설명은 기능별 개발자 문서의 Paramater 부분을 확인하시면 됩니다😊

🚩 inDate의 활용 예시

뒤끝에서 가장 많이 만날 수 있는 inDate 활용 케이스 두 가지를 공유드립니다.

첫 번째, '특정' 데이터를 조회해 수정하기

게임에서 특정 데이터를 수정하거나 삭제할 때, 꼭 필요한 작업이 무엇일까요?

바로 어떤 데이터를 수정하거나 삭제할 것인지 식별하는 것인데, 이때 inDate가 사용됩니다.
아래 코드를 통해 원하는 데이터를 수정하는 과정을 보여드립니다.

(1) 먼저 수정하고자 하는 데이터가 있는 테이블을 불러옵니다.

				
					 var bro = Backend.PlayerData.GetMyData(tableName);
 // 불러오기에 실패할 경우
 if(bro.IsSuccess() == false) 
 {
    Debug.Log("데이터 읽기 중에 문제가 발생했습니다 : " + bro.ToString());
 }
 // 불러오기에는 성공했으나 데이터가 존재하지 않는 경우
 if(bro.IsSuccess() && bro.FlattenRows().Count <= 0) 
 {
    Debug.Log("데이터가 존재하지 않습니다");
 }
 
 Debug.Log("데이터 : " + bro);
 // 이후 로직은 밑에
				
			

(2) 데이터 불러오기에 성공할 경우, 리턴 값은 아래와 같을 것입니다.

해당 테이블에 포함된 데이터의 List를 출력할 것이며,  rows [ ] 에서 inDate 값을 확인할 수 있습니다. 이 inDate가 바로 내가 수정하고자 했던 데이터의 고유한 inDate 값입니다.

				
					{
    "serverTime": "2023-10-29T13:09:53.832Z",
    "rows": [
        {
            "stringData": {
                "S": "57J5EO3CJOGE"
            },
            "floatData": {
                "N": "0.17887"
            }
            "inDate": {
                "S": "2023-10-29T13:09:53.543Z"
            }
        }
    ]
}
				
			

(3) 수정하고자 했던 데이터가 무엇인지 식별 되었다면(해당 데이터의 고유한 inDate 값을 얻었다면), 아래와 같이 수정합니다.

				
					 Debug.Log("데이터 : " + bro);
 
// 해당 테이블에 존재하는 자신의 데이터 중, inDate와 일치하는 데이터 수정
string inDate = bro.FlattenRows()[0]["inDate"].ToString(); // 2023-10-29T13:09:53.543Z
Backend.PlayerData.UpdateMyData("tableName", inDate , param);
				
			
두 번째, '특정' 유저를 조회해 친구 요청하기

친구 기능이 정상 작동하기 위해서는, 친구 요청을 보내고 싶은 유저를 식별해야 합니다. 그리고 이때에도 역시 inDate가 필요합니다.

유저의 inDate는 해당 유저의 닉네임을 통해 쉽게 찾을 수 있는데요! 바로 유저 정보 조회 기능을 활용하는 것입니다. 방법은 아래와 같습니다.

(1) 닉네임을 통해 유저의 고유한 inDate 값(gamerInDate)을 얻어냅니다.

				
					var bro = Backend.Social.GetUserInfoByNickName("nickName");

//example
string gamerIndate = bro.GetReturnValuetoJSON()["row"]["inDate"].ToString();
				
			

(2) 아래는 GetUserInfoByNickName() 함수의 리턴 값입니다.

				
					{
    "row":
    {
        "nickname":"나는야테스트유저", // 유저의 닉네임
        "inDate":"2021-00-00T00:00:00.000Z", // 유저의 inDate
        "lastLogin":"2021-06-23T02:08:56.235Z", // 유저의 마지막 로그인 시각
        "guildName":"testGuild" // 유저의 길드명 (없는 경우 null)
    }
}
				
			

(3) gamerInDate를 얻었다면 바로 gamerInDate 매개변수에 해당 값을 입력해, 해당 유저에게 친구 요청을 보냅니다.

				
					Backend.Friend.RequestFriend(gamerIndate); // "2020-02-11T01:08:12.603Z"

				
			

오늘은 뒤끝 필수 지식 중 하나인 inDate에 대해 알아보았습니다.

뒤끝이 아직 익숙지 않은 개발자님께는 오늘 소개드린 inDate가 잘 와닿지 않으실 수 있는데요😊
최대한 이해하기 쉽게 풀어보았으니 한번 읽어보시고,  관련하여 궁금한 부분이 있으시다면 언제든 댓글 남겨주세요!

사실 뒤끝을 활용해 데이터를 불러온다면, 필수로 사용되는 inDate! ⬅️ 이 사실을 인지하신 것 만으로도 오늘의 글은 목적을 다한 것입니다. 

꼭 기억해 주시기를 바라며 이만 마치겠습니다.
감사합니다💌

0

댓글