Skip to main content

PlayerDataStoreService

This item only works when running on the server. Server

Centralized service using serviceBag. This will let other packages work with a single player datastore service.

Functions

Init

PlayerDataStoreService.Init() → ()

Initializes the PlayerDataStoreService. Should be done via ServiceBag.Init.

Start

PlayerDataStoreService.Start(selfPlayerDataStoreService) → ()

Initializes the datastore service for players. Should be done via ServiceBag.Start.

SetDataStoreName

PlayerDataStoreService.SetDataStoreName(
dataStoreNamestring
) → ()

Sets the name for the datastore to retrieve.

INFO

Must be done before start and after init.

SetDataStoreScope

PlayerDataStoreService.SetDataStoreScope(
dataStoreScopestring
) → ()

Sets the scope for the datastore to retrieve.

INFO

Must be done before start and after init.

SetLoadRetryOptions

PlayerDataStoreService.SetLoadRetryOptions(
optionsRetryOptions
) → ()

Overrides the load retry backoff on every player datastore. See PlayerDataStoreManager.SetLoadRetryOptions -- this is what decides how long a player waits on a lock held by a dead server before it is stolen.

INFO

Must be done before start and after init.

SetAutoSaveTimeSeconds

PlayerDataStoreService.SetAutoSaveTimeSeconds(
autoSaveTimeSecondsnumber?
) → ()

Sets the autosave interval on every player datastore. See PlayerDataStoreManager.SetAutoSaveTimeSeconds.

INFO

Must be done before start and after init.

SetSessionMessagingCloseDelaySeconds

PlayerDataStoreService.SetSessionMessagingCloseDelaySeconds(
secondsnumber
) → ()

Sets the post-graceful-close replication delay on every player datastore. See PlayerDataStoreManager.SetSessionMessagingCloseDelaySeconds.

INFO

Must be done before start and after init.

SetRobloxDataStore

PlayerDataStoreService.SetRobloxDataStore(
robloxDataStoreDataStore | DataStoreMock
) → ()

Injects the underlying datastore the manager wraps, instead of resolving a real one. Accepts a real datastore or a DataStoreMock. Intended for testing; must be called before the manager is first built.

PromiseDataStore

PlayerDataStoreService.PromiseDataStore(
playerPlayer | number
) → Promise<DataStore>

Gets the datastore for the player.

TIP

If you get the datastore by UserId, be sure to call datastore:PromiseCloseSession() when done to avoid session leaks.

PromiseDataStoreHandle

PlayerDataStoreService.PromiseDataStoreHandle(
playerOrUserIdPlayer | number
) → Promise<PlayerDataStoreHandle>

Borrows the player's DataStore as a PlayerDataStoreHandle, which releases the session when destroyed. Prefer this over PlayerDataStoreService.PromiseDataStore when acting on a player by userId, since it is what makes the release hard to forget -- see PlayerDataStoreHandle.

PromiseSessionClosed

PlayerDataStoreService.PromiseSessionClosed(
playerOrUserIdPlayer | number
) → Promise<()>

Resolves once any removal in flight for this player has saved and closed their session -- see PlayerDataStoreManager.PromiseSessionClosed.

PromiseAddRemovingCallback

PlayerDataStoreService.PromiseAddRemovingCallback(
callbackfunction--

May return a promise

) → Promise

Adds a removing callback to the manager.

PromiseManager

PlayerDataStoreService.PromiseManager(selfPlayerDataStoreService) → Promise<PlayerDataStoreManager>

Retrieves the manager

Show raw api
{
    "functions": [
        {
            "name": "Init",
            "desc": "Initializes the PlayerDataStoreService. Should be done via [ServiceBag.Init].",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "PlayerDataStoreService"
                },
                {
                    "name": "serviceBag",
                    "desc": "",
                    "lua_type": "ServiceBag"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 45,
                "path": "src/datastore/src/Server/PlayerDataStoreService.lua"
            }
        },
        {
            "name": "Start",
            "desc": "Initializes the datastore service for players. Should be done via [ServiceBag.Start].",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "PlayerDataStoreService"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 66,
                "path": "src/datastore/src/Server/PlayerDataStoreService.lua"
            }
        },
        {
            "name": "SetDataStoreName",
            "desc": "Sets the name for the datastore to retrieve.\n\n:::info\nMust be done before start and after init.\n:::",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "PlayerDataStoreService"
                },
                {
                    "name": "dataStoreName",
                    "desc": "",
                    "lua_type": "string"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 80,
                "path": "src/datastore/src/Server/PlayerDataStoreService.lua"
            }
        },
        {
            "name": "SetDataStoreScope",
            "desc": "Sets the scope for the datastore to retrieve.\n\n:::info\nMust be done before start and after init.\n:::",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "PlayerDataStoreService"
                },
                {
                    "name": "dataStoreScope",
                    "desc": "",
                    "lua_type": "string"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 97,
                "path": "src/datastore/src/Server/PlayerDataStoreService.lua"
            }
        },
        {
            "name": "SetLoadRetryOptions",
            "desc": "Overrides the load retry backoff on every player datastore. See\n[PlayerDataStoreManager.SetLoadRetryOptions] -- this is what decides how long a player waits on a\nlock held by a dead server before it is stolen.\n\n:::info\nMust be done before start and after init.\n:::",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "PlayerDataStoreService"
                },
                {
                    "name": "options",
                    "desc": "",
                    "lua_type": "RetryOptions"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 116,
                "path": "src/datastore/src/Server/PlayerDataStoreService.lua"
            }
        },
        {
            "name": "SetAutoSaveTimeSeconds",
            "desc": "Sets the autosave interval on every player datastore. See\n[PlayerDataStoreManager.SetAutoSaveTimeSeconds].\n\n:::info\nMust be done before start and after init.\n:::",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "PlayerDataStoreService"
                },
                {
                    "name": "autoSaveTimeSeconds",
                    "desc": "",
                    "lua_type": "number?"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 137,
                "path": "src/datastore/src/Server/PlayerDataStoreService.lua"
            }
        },
        {
            "name": "SetSessionMessagingCloseDelaySeconds",
            "desc": "Sets the post-graceful-close replication delay on every player datastore. See\n[PlayerDataStoreManager.SetSessionMessagingCloseDelaySeconds].\n\n:::info\nMust be done before start and after init.\n:::",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "PlayerDataStoreService"
                },
                {
                    "name": "seconds",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 156,
                "path": "src/datastore/src/Server/PlayerDataStoreService.lua"
            }
        },
        {
            "name": "SetRobloxDataStore",
            "desc": "Injects the underlying datastore the manager wraps, instead of resolving a real one. Accepts\na real datastore or a [DataStoreMock]. Intended for testing; must be called before the manager\nis first built.",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "PlayerDataStoreService"
                },
                {
                    "name": "robloxDataStore",
                    "desc": "",
                    "lua_type": "DataStore | DataStoreMock"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 171,
                "path": "src/datastore/src/Server/PlayerDataStoreService.lua"
            }
        },
        {
            "name": "PromiseDataStore",
            "desc": "Gets the datastore for the player.\n\n:::tip\nIf you get the datastore by UserId, be sure to call datastore:PromiseCloseSession()\nwhen done to avoid session leaks.\n:::",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "PlayerDataStoreService"
                },
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player | number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise<DataStore>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 189,
                "path": "src/datastore/src/Server/PlayerDataStoreService.lua"
            }
        },
        {
            "name": "PromiseDataStoreHandle",
            "desc": "Borrows the player's [DataStore] as a [PlayerDataStoreHandle], which releases the session when\ndestroyed. Prefer this over [PlayerDataStoreService.PromiseDataStore] when acting on a player by\nuserId, since it is what makes the release hard to forget -- see [PlayerDataStoreHandle].",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "PlayerDataStoreService"
                },
                {
                    "name": "playerOrUserId",
                    "desc": "",
                    "lua_type": "Player | number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise<PlayerDataStoreHandle>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 206,
                "path": "src/datastore/src/Server/PlayerDataStoreService.lua"
            }
        },
        {
            "name": "PromiseSessionClosed",
            "desc": "Resolves once any removal in flight for this player has saved and closed their session -- see\n[PlayerDataStoreManager.PromiseSessionClosed].",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "PlayerDataStoreService"
                },
                {
                    "name": "playerOrUserId",
                    "desc": "",
                    "lua_type": "Player | number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise<()>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 222,
                "path": "src/datastore/src/Server/PlayerDataStoreService.lua"
            }
        },
        {
            "name": "PromiseAddRemovingCallback",
            "desc": "Adds a removing callback to the manager.",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "PlayerDataStoreService"
                },
                {
                    "name": "callback",
                    "desc": "May return a promise",
                    "lua_type": "function"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 236,
                "path": "src/datastore/src/Server/PlayerDataStoreService.lua"
            }
        },
        {
            "name": "PromiseManager",
            "desc": "Retrieves the manager",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "PlayerDataStoreService\n"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise<PlayerDataStoreManager>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 249,
                "path": "src/datastore/src/Server/PlayerDataStoreService.lua"
            }
        }
    ],
    "properties": [],
    "types": [],
    "name": "PlayerDataStoreService",
    "desc": "Centralized service using serviceBag. This will let other packages work with a single player datastore service.",
    "realm": [
        "Server"
    ],
    "source": {
        "line": 8,
        "path": "src/datastore/src/Server/PlayerDataStoreService.lua"
    }
}