@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.0",
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": "24d3b85c01f0ce732d4290b62af8cc1b5c47f07a"
41
+ "gitHead": "8f4aef032ba8bb0e3b3e576df73d921cc1ac545b"
42
42
  }
@@ -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