@quenty/datastore 7.4.0 → 7.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,18 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [7.4.1](https://github.com/Quenty/NevermoreEngine/compare/@quenty/datastore@7.4.0...@quenty/datastore@7.4.1) (2023-01-03)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* Add PrivateServerDataStoreService ([32c9921](https://github.com/Quenty/NevermoreEngine/commit/32c9921358f5728d9502b89c391ff761a0e454e7))
|
|
12
|
+
* Better error message if key is an empty string ([dd2528d](https://github.com/Quenty/NevermoreEngine/commit/dd2528dfe99d272aa53790d883896f7523b5cb47))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
6
18
|
# [7.4.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/datastore@7.3.0...@quenty/datastore@7.4.0) (2022-11-12)
|
|
7
19
|
|
|
8
20
|
**Note:** Version bump only for package @quenty/datastore
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenty/datastore",
|
|
3
|
-
"version": "7.4.
|
|
3
|
+
"version": "7.4.1",
|
|
4
4
|
"description": "Quenty's Datastore implementation for Roblox",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Roblox",
|
|
@@ -38,5 +38,5 @@
|
|
|
38
38
|
"publishConfig": {
|
|
39
39
|
"access": "public"
|
|
40
40
|
},
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "8f4aef032ba8bb0e3b3e576df73d921cc1ac545b"
|
|
42
42
|
}
|
package/src/Server/DataStore.lua
CHANGED
|
@@ -96,6 +96,10 @@ function DataStore.new(robloxDataStore, key)
|
|
|
96
96
|
self._robloxDataStore = robloxDataStore or error("No robloxDataStore")
|
|
97
97
|
self._cacheTimeSeconds = DEFAULT_CACHE_TIME_SECONDS
|
|
98
98
|
|
|
99
|
+
if self._key == "" then
|
|
100
|
+
error("[DataStore] - Key cannot be an empty string")
|
|
101
|
+
end
|
|
102
|
+
|
|
99
103
|
--[=[
|
|
100
104
|
Prop that fires when saving. Promise will resolve once saving is complete.
|
|
101
105
|
@prop Saving Signal<Promise>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
--[=[
|
|
2
|
+
Service which manages central access to datastore. This datastore is per a private server
|
|
3
|
+
or reserved server. The main server will also get one, with an empty key.
|
|
4
|
+
|
|
5
|
+
@class PrivateServerDataStoreService
|
|
6
|
+
]=]
|
|
7
|
+
|
|
8
|
+
local require = require(script.Parent.loader).load(script)
|
|
9
|
+
|
|
10
|
+
local DataStore = require("DataStore")
|
|
11
|
+
local DataStorePromises = require("DataStorePromises")
|
|
12
|
+
local Maid = require("Maid")
|
|
13
|
+
|
|
14
|
+
local PrivateServerDataStoreService = {}
|
|
15
|
+
PrivateServerDataStoreService.ServiceName = "PrivateServerDataStoreService"
|
|
16
|
+
|
|
17
|
+
function PrivateServerDataStoreService:Init(serviceBag)
|
|
18
|
+
assert(not self._serviceBag, "Already initialized")
|
|
19
|
+
self._serviceBag = assert(serviceBag, "No serviceBag")
|
|
20
|
+
|
|
21
|
+
self._bindToCloseService = self._serviceBag:GetService(require("BindToCloseService"))
|
|
22
|
+
|
|
23
|
+
self._maid = Maid.new()
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
function PrivateServerDataStoreService:PromiseDataStore()
|
|
27
|
+
if self._dataStorePromise then
|
|
28
|
+
return self._dataStorePromise
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
self._dataStorePromise = self:_promiseRobloxDataStore()
|
|
32
|
+
:Then(function(robloxDataStore)
|
|
33
|
+
local dataStore = DataStore.new(robloxDataStore, self:_getKey())
|
|
34
|
+
self._maid:GiveTask(dataStore)
|
|
35
|
+
|
|
36
|
+
self._maid:GiveTask(self._bindToCloseService:RegisterPromiseOnCloseCallback(function()
|
|
37
|
+
return dataStore:Save()
|
|
38
|
+
end))
|
|
39
|
+
|
|
40
|
+
return dataStore
|
|
41
|
+
end)
|
|
42
|
+
|
|
43
|
+
return self._dataStorePromise
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
function PrivateServerDataStoreService:_promiseRobloxDataStore()
|
|
47
|
+
if self._robloxDataStorePromise then
|
|
48
|
+
return self._robloxDataStorePromise
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
-- This could potentially
|
|
52
|
+
self._robloxDataStorePromise = self._maid:GivePromise(DataStorePromises.promiseDataStore("PrivateServerDataStores", "Version1"))
|
|
53
|
+
|
|
54
|
+
return self._robloxDataStorePromise
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
function PrivateServerDataStoreService:_getKey()
|
|
58
|
+
if game.PrivateServerId ~= "" then
|
|
59
|
+
return game.PrivateServerId
|
|
60
|
+
else
|
|
61
|
+
return "main"
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
function PrivateServerDataStoreService:Destroy()
|
|
66
|
+
self._maid:DoCleaning()
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
return PrivateServerDataStoreService
|