SortableDataStorage

정수형 데이터를 관리하고, 정렬한 데이터를 가져오는 기능이 있는 저장소입니다. 메이커와 출시 환경은 저장소를 공유하지 않습니다.

# Properties

[{"index":"string Name (ReadOnly)","0":"DataStorage의 이름입니다."}]

# Methods

[{"index":"int32, List BatchDeleteAndWait(List keys) (ServerOnly) (Yield)","0":"입력한 키들로 데이터들을 삭제합니다. 에러 코드와 삭제에 성공한 키들을 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

[{"index":"void BatchDeleteAsync(List keys, func> callbackFunction) (ServerOnly)","0":"입력한 키들로 데이터들을 삭제합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 삭제에 성공한 키들과 함께 callbackFunction으로 전달한 함수가 호출됩니다."}]

[{"index":"int32, SortableDataStorageItemPages BatchGetAndWait(List keys) (ServerOnly) (Yield)","0":"입력한 키들에 해당하는 데이터들을 조회합니다. 작업이 완료되면 에러 코드와 조회용 객체를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

[{"index":"void BatchGetAsync(List keys, func, SortableDataStorageItemPages> callbackFunction) (ServerOnly)","0":"입력한 키들에 해당하는 데이터들을 조회합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 키, 조회용 객체와 함께 callbackFunction으로 전달된 함수가 호출됩니다."}]

[{"index":"int32, SortableDataStorageItemPages BatchGetByInfoAndWait(List keyInfos) (ServerOnly) (Yield)","0":"입력한 DataStorageKeyInfo들로 데이터들을 조회합니다. 작업이 완료되면 에러 코드와 조회용 객체를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

[{"index":"void BatchGetByInfoAsync(List keyInfos, func, SortableDataStorageItemPages> callbackFunction) (ServerOnly)","0":"입력한 DataStorageKeyInfo들로 데이터들을 조회합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 키, 조회용 객체와 함께 callbackFunction으로 전달된 함수가 호출됩니다."}]

[{"index":"int32, List BatchSetAndWait(Dictionary keyValues) (ServerOnly) (Yield)","0":"입력한 키들로 데이터들을 저장합니다. 에러 코드와 저장에 성공한 키들을 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

[{"index":"void BatchSetAsync(Dictionary keyValues, func> callbackFunction) (ServerOnly)","0":"입력한 키들로 데이터들을 저장합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 저장에 성공한 키들과 함께 callbackFunction으로 전달된 함수가 호출됩니다."}]

[{"index":"int32, List BatchSetByInfoAndWait(Dictionary keyValues) (ServerOnly) (Yield)","0":"입력한 DataStorageKeyInfo들로 데이터들을 저장합니다. 에러 코드와 저장에 성공한 DataStorageKeyInfo들을 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

[{"index":"void BatchSetByInfoAsync(Dictionary keyValues, func> callbackFunction) (ServerOnly)","0":"입력한 DataStorageKeyInfo들로 데이터들을 저장합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 저장에 성공한 DataStorageKeyInfo들과 함께 callbackFunction으로 전달된 함수가 호출됩니다."}]

[{"index":"int32 DeleteAndWait(string key) (ServerOnly) (Yield)","0":"입력한 키로 데이터를 삭제하고 에러 코드를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

[{"index":"void DeleteAsync(string key, func callbackFunction) (ServerOnly)","0":"입력한 키로 데이터를 삭제합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 키와 함께 callbackFunction으로 전달된 함수가 호출됩니다."}]

[{"index":"int32, integer GetAndWait(string key) (ServerOnly) (Yield)","0":"입력한 키로 데이터를 조회합니다. 작업이 완료되면 에러 코드와 데이터를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

[{"index":"void GetAsync(string key, func callbackFunction) (ServerOnly)","0":"입력한 키로 데이터를 조회합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 키, 데이터와 함께 callbackFunction으로 전달된 함수가 호출됩니다."}]

[{"index":"int32, integer GetByInfoAndWait(DataStorageKeyInfo keyInfo) (ServerOnly) (Yield)","0":"입력한 DataStorageKeyInfo로 데이터를 조회합니다. DataStorageKeyInfo로 가져올 데이터의 자세한 조건을 설정할 수 있습니다. 작업이 완료되면 에러 코드와 데이터를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

[{"index":"void GetByInfoAsync(DataStorageKeyInfo keyInfo, func callbackFunction) (ServerOnly)","0":"입력한 DataStorageKeyInfo로 데이터를 조회합니다. DataStorageKeyInfo로 가져올 데이터의 자세한 조건을 설정할 수 있습니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, DataStorageKeyInfo, 데이터와 함께 callbackFunction으로 전달된 함수가 호출됩니다."}]

[{"index":"int32, SortableDataStorageItemPages GetPagesAndWait(string tag) (ServerOnly) (Yield)","0":"입력한 태그를 가진 데이터들을 조회합니다. 작업이 완료되면 에러 코드와 조회용 객체를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

[{"index":"void GetPagesAsync(string tag, func callbackFunction) (ServerOnly)","0":"입력한 태그를 가진 데이터들을 조회합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 태그, 조회용 객체와 함께 callbackFunction으로 전달된 함수가 호출됩니다."}]

[{"index":"int32, SortableDataStorageItemPages GetSortedAndWait(SortDirection sortDirection, integer min, integer max) (ServerOnly) (Yield)","0":"데이터들을 정렬된 순서로 조회합니다. 작업이 완료되면 에러 코드와 조회용 객체를 반환합니다. sortDirection으로 오름\/내림차순 정렬을 설정할 수 있습니다. min, max로 설정한 범위 내의 데이터들을 조회할 수 있습니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

[{"index":"void GetSortedAsync(SortDirection sortDirection, integer min, integer max, func callbackFunction) (ServerOnly)","0":"데이터들을 정렬된 순서로 조회합니다. sortDirection으로 오름\/내림차순 정렬을 설정할 수 있습니다. min, max로 설정한 범위 내의 데이터들을 조회할 수 있습니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 조회용 객체와 함께 callbackFunction으로 전달된 함수가 호출됩니다."}]

[{"index":"int32, DataStorageVersionPages GetVersionsAndWait(string key, SortDirection sortDirection, DateTime minDate, DateTime maxDate) (ServerOnly) (Yield)","0":"입력한 키에 해당하는 데이터의 버전들을 조회합니다. 작업이 완료되면 에러 코드와 조회용 객체를 반환합니다. sortDirection으로 오름\/내림차순 정렬을 설정할 수 있습니다. minDate, maxDate로 설정한 시간대 내에서 생성된 버전을 조회할 수 있습니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

[{"index":"void GetVersionsAsync(string key, SortDirection sortDirection, DateTime minDate, DateTime maxDate, func callbackFunction) (ServerOnly)","0":"입력한 키에 해당하는 데이터의 버전들을 조회합니다. sortDirection으로 오름\/내림차순 정렬을 설정할 수 있습니다. minDate, maxDate로 설정한 시간대 내에서 생성된 버전을 조회할 수 있습니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 키, 조회용 객체와 함께 callbackFunction으로 전달된 함수가 호출됩니다."}]

[{"index":"int32, integer IncreaseAndWait(string key, integer delta) (ServerOnly) (Yield)","0":"입력한 키에 해당하는 데이터의 값을 delta만큼 증가시킵니다. 작업이 완료되면 에러 코드와 갱신된 값을 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

[{"index":"void IncreaseAsync(string key, integer delta, func callbackFunction) (ServerOnly)","0":"입력한 키에 해당하는 데이터의 값을 delta만큼 증가시킵니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 키, 갱신된 값과 함께 callbackFunction으로 전달된 함수가 호출됩니다."}]

[{"index":"int32 SetAndWait(string key, integer value) (ServerOnly) (Yield)","0":"입력한 키로 데이터를 저장합니다. 작업이 완료되면 에러 코드를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

[{"index":"void SetAsync(string key, integer value, func callbackFunction) (ServerOnly)","0":"입력한 키로 데이터를 저장합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 키와 함께 callbackFunction으로 전달된 함수가 호출됩니다."}]

[{"index":"int32 SetByInfoAndWait(DataStorageKeyInfo keyInfo, integer value) (ServerOnly) (Yield)","0":"입력한 DataStorageKeyInfo로 데이터를 저장합니다. DataStorageKeyInfo로 자세한 정보를 설정할 수 있습니다. 작업이 완료되면 에러 코드를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

[{"index":"void SetByInfoAsync(DataStorageKeyInfo keyInfo, integer value, func callbackFunction) (ServerOnly)","0":"입력한 DataStorageKeyInfo로 데이터를 저장합니다. DataStorageKeyInfo로 자세한 정보를 설정할 수 있습니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, DataStorageKeyInfo와 함께 callbackFunction으로 전달된 함수가 호출됩니다."}]

[{"index":"int32, List TransactDeleteAndWait(List keys) (ServerOnly) (Yield)","0":"입력한 키들로 데이터를 삭제합니다. 호출에 포함된 모든 작업이 성공하면 에러 코드, 삭제에 성공한 키들을 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. 모든 작업 중 하나라도 실패한다면, 함수 호출이 실패합니다. 한 번에 최대 20개 Key까지 조작할 수 있습니다."}]

[{"index":"void TransactDeleteAsync(List keys, func> callbackFunction) (ServerOnly)","0":"입력한 키들로 데이터를 삭제합니다. 이 함수 호출은 비동기로 수행됩니다. 호출에 포함된 모든 작업이 성공하면 에러 코드, 삭제에 성공한 키들과 함께 callbackFunction으로 전달한 함수가 호출됩니다. 모든 작업 중 하나라도 실패한다면, 함수 호출이 실패합니다. 한 번에 최대 20개 key까지 조작할 수 있습니다."}]

[{"index":"int32, List TransactSetAndWait(Dictionary keyValues) (ServerOnly) (Yield)","0":"입력한 키들로 데이터를 저장합니다. 호출에 포함된 모든 작업이 성공하면 에러 코드, 저장에 성공한 키들을 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. 모든 작업 중 하나라도 실패한다면, 함수 호출이 실패합니다. 한 번에 최대 20개 Key까지 조작 할 수 있습니다."}]

[{"index":"void TransactSetAsync(Dictionary keyValues, func> callbackFunction) (ServerOnly)","0":"입력한 키들로 데이터를 저장합니다. 이 함수 호출은 비동기로 수행됩니다. 호출에 포함된 모든 작업이 성공하면 에러 코드, 저장에 성공한 키들과 함께 callbackFunction으로 전달한 함수가 호출됩니다. 모든 작업 중 하나라도 실패한다면, 함수 호출이 실패합니다. 한 번에 최대 20개 Key까지 조작 할 수 있습니다."}]

[{"index":"int32, List TransactSetByInfoAndWait(Dictionary keyValues) (ServerOnly) (Yield)","0":"입력한 DataStorageKeyInfo들로 데이터를 저장합니다. 모든 데이터 저장에 성공하면 에러 코드와 성공한 DataStorageKeyInfo를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. 모든 작업 중 하나라도 실패한다면, 함수 호출이 실패합니다. 한 번에 최대 20개 Key까지 조작 할 수 있습니다."}]

[{"index":"void TransactSetByInfoAsync(Dictionary keyValues, func> callbackFunction) (ServerOnly)","0":"입력한 DataStorageKeyInfo들로 데이터를 저장합니다. 이 함수 호출은 비동기로 수행됩니다. 호출에 포함된 모든 작업이 성공하면 에러 코드, 저장에 성공한 DataStorageKeyInfo들과 함께 callbackFunction으로 전달된 함수가 호출됩니다. 모든 작업 중 하나라도 실패한다면, 함수 호출이 실패합니다. 한 번에 최대 20개 Key까지 조작 할 수 있습니다."}]

# Examples

#### IncreaseAndWait

값을 증가시키는 예제입니다.
    
    
    @Component
    script PersistentCounter extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local ds = _DataStorageService:GetSortableDataStorage("Storage")
            
            -- "Key"에 해당하는 값이 없을 경우 기본 값으로 생성 후 1을 증가시킵니다.
            local errorCode, value = ds:IncreaseAndWait("Key", 1)
        end
    end
    

#### IncreaseAsync

값을 비동기로 증가시키는 예제입니다.
    
    
    @Component
    script Counter extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local ds = _DataStorageService:GetSortableDataStorage("Storage")
            
            ds:IncreaseAsync("Key", 1, function(errorCode, key, value)
                -- 작업이 완료되면 호출됩니다.
            end)
        end
    end
    

#### GetSortedAndWait

데이터를 정렬된 순서로 조회하는 예제입니다.
    
    
    @Component
    script SortedDataEnumerator extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local ds = _DataStorageService:GetSortableDataStorage("Storage")
            
            -- 데이터들을 정렬된 순서로 가져옵니다.
            local errorCode, itemPages = ds:GetSortedAndWait(SortDirection.Ascending, 0, 1000)
            
            while true do
                -- GetCurrentPageDatas()로 현재 페이지의 목록을 가져올 수 있습니다.
                local items = itemPages:GetCurrentPageDatas()
                for _, item in pairs(items) do
                     -- SortableDataStorageItem을 통해 Key값과 Value값을 조회할 수 있습니다.
                    log(item.KeyInfo.Key)
                    log(item.KeyInfo.Tag)
                    log(item.KeyInfo.Version)
                    log(item.Value) 
                end
            
                -- IsLastPage 프로퍼티를 통해 현재 페이지가 마지막 페이지인지 확인할 수 있습니다.
                if itemPages.IsLastPage == true then
                    break
                end
            
                -- MoveToNextPageAndWait()로 다음 페이지로 넘어갈 수 있습니다.
                itemPages:MoveToNextPageAndWait()
            end
        end
    end
    

# SeeAlso

  * DataStorageService