@ecashlib/shared-message 1.0.2 → 1.0.3

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.
@@ -0,0 +1,213 @@
1
+ import { FastifyInstance } from "fastify";
2
+ import { Redis } from "ioredis";
3
+ declare module "fastify" {
4
+ interface FastifyInstance {
5
+ redis: Redis;
6
+ redisRepository: RedisRepository;
7
+ }
8
+ }
9
+ export declare class RedisRepository {
10
+ private readonly redis;
11
+ private readonly logger;
12
+ constructor(fastify: FastifyInstance);
13
+ /**
14
+ * Set a string value with TTL (Time To Live)
15
+ * @param key Redis key
16
+ * @param value String value to store
17
+ * @param ttlSeconds TTL in seconds
18
+ */
19
+ setString(key: string, value: string, ttlSeconds?: number): Promise<void>;
20
+ /**
21
+ * Get a string value by key
22
+ * @param key Redis key
23
+ * @returns Promise<string | null> The stored value or null if not found
24
+ */
25
+ getString(key: string): Promise<string | null>;
26
+ /**
27
+ * Set an object as JSON string with optional TTL
28
+ * @param key Redis key
29
+ * @param object Object to store
30
+ * @param ttlSeconds Optional TTL in seconds
31
+ */
32
+ setObject<T>(key: string, object: T, ttlSeconds?: number): Promise<void>;
33
+ /**
34
+ * Get an object by key and parse as JSON
35
+ * @param key Redis key
36
+ * @returns Promise<T | null> The parsed object or null if not found
37
+ */
38
+ getObject<T>(key: string): Promise<T | null>;
39
+ /**
40
+ * Get a Redis hash map operations
41
+ * @param mapName Hash map name
42
+ * @returns RedisHashMap instance for operations
43
+ */
44
+ getMap(mapName: string): RedisHashMap;
45
+ /**
46
+ * Delete a key from Redis
47
+ * @param key Redis key to delete
48
+ * @returns Promise<boolean> true if key was deleted, false if key didn't exist
49
+ */
50
+ delete(key: string): Promise<boolean>;
51
+ /**
52
+ * Check if a key exists in Redis
53
+ * @param key Redis key to check
54
+ * @returns Promise<boolean> true if key exists, false otherwise
55
+ */
56
+ exists(key: string): Promise<boolean>;
57
+ /**
58
+ * Set expiry time for an existing key
59
+ * @param key Redis key
60
+ * @param ttlSeconds TTL in seconds
61
+ * @returns Promise<boolean> true if expiry was set, false if key doesn't exist
62
+ */
63
+ expire(key: string, ttlSeconds: number): Promise<boolean>;
64
+ /**
65
+ * Get TTL (time to live) for a key
66
+ * @param key Redis key
67
+ * @returns Promise<number> TTL in seconds, -1 if no expiry, -2 if key doesn't exist
68
+ */
69
+ getTTL(key: string): Promise<number>;
70
+ /**
71
+ * Increment a numeric value stored at key
72
+ * @param key Redis key
73
+ * @param increment Amount to increment by (default: 1)
74
+ * @returns Promise<number> The new value after increment
75
+ */
76
+ increment(key: string, increment?: number): Promise<number>;
77
+ /**
78
+ * Get multiple keys at once
79
+ * @param keys Array of Redis keys
80
+ * @returns Promise<(string | null)[]> Array of values corresponding to keys
81
+ */
82
+ getMultiple(keys: string[]): Promise<(string | null)[]>;
83
+ /**
84
+ * Set multiple key-value pairs at once
85
+ * @param keyValues Object containing key-value pairs
86
+ * @returns Promise<void>
87
+ */
88
+ setMultiple(keyValues: Record<string, string>): Promise<void>;
89
+ /**
90
+ * Find keys matching a pattern using KEYS command
91
+ * WARNING: This command can be slow on large datasets. Consider using SCAN for production.
92
+ * @param pattern Pattern to match keys (supports wildcards: *, ?, [])
93
+ * @returns Promise<string[]> Array of matching key names
94
+ *
95
+ * Pattern examples:
96
+ * - "user:*" - matches all keys starting with "user:"
97
+ * - "session:*:data" - matches keys like "session:123:data"
98
+ * - "cache:user:[0-9]*" - matches keys like "cache:user:123"
99
+ */
100
+ keys(pattern: string): Promise<string[]>;
101
+ /**
102
+ * Scan keys matching a pattern using SCAN command (recommended for production)
103
+ * This is more efficient than KEYS for large datasets as it doesn't block Redis
104
+ * @param pattern Pattern to match keys
105
+ * @param count Number of keys to return per iteration (default: 10)
106
+ * @returns Promise<string[]> Array of matching key names
107
+ */
108
+ scanKeys(pattern: string, count?: number): Promise<string[]>;
109
+ /**
110
+ * Add one or more members to a Redis set
111
+ * @param key Redis set key
112
+ * @param members Members to add to the set
113
+ * @returns Promise<number> Number of members that were added (excluding already existing members)
114
+ */
115
+ setAdd(key: string, ...members: string[]): Promise<number>;
116
+ /**
117
+ * Remove one or more members from a Redis set
118
+ * @param key Redis set key
119
+ * @param members Members to remove from the set
120
+ * @returns Promise<number> Number of members that were removed
121
+ */
122
+ setRemove(key: string, ...members: string[]): Promise<number>;
123
+ /**
124
+ * Get the number of members in a Redis set
125
+ * @param key Redis set key
126
+ * @returns Promise<number> Number of members in the set
127
+ */
128
+ setSize(key: string): Promise<number>;
129
+ /**
130
+ * Check if a member exists in a Redis set
131
+ * @param key Redis set key
132
+ * @param member Member to check
133
+ * @returns Promise<boolean> true if member exists in the set
134
+ */
135
+ setContains(key: string, member: string): Promise<boolean>;
136
+ /**
137
+ * Get all members of a Redis set
138
+ * @param key Redis set key
139
+ * @returns Promise<string[]> Array of all members in the set
140
+ */
141
+ setMembers(key: string): Promise<string[]>;
142
+ /**
143
+ * Get a random member from a Redis set
144
+ * @param key Redis set key
145
+ * @param count Number of random members to return (default: 1)
146
+ * @returns Promise<string[]> Array of random members
147
+ */
148
+ setRandomMembers(key: string, count?: number): Promise<string[]>;
149
+ /**
150
+ * Pop (remove and return) a random member from a Redis set
151
+ * @param key Redis set key
152
+ * @param count Number of members to pop (default: 1)
153
+ * @returns Promise<string[]> Array of popped members
154
+ */
155
+ setPop(key: string, count?: number): Promise<string[]>;
156
+ hSet<T>(key: string, field: string, value: T): Promise<void>;
157
+ hSetMultiple(key: string, values: Record<string, any>): Promise<void>;
158
+ hGet<T>(key: string, field: string): Promise<T | null>;
159
+ hGetAll<T>(key: string): Promise<T>;
160
+ hDel(key: string): Promise<void>;
161
+ hDelItem(key: string, field: string): Promise<void>;
162
+ }
163
+ /**
164
+ * Helper class for Redis Hash Map operations
165
+ */
166
+ export declare class RedisHashMap {
167
+ private mapName;
168
+ private redis;
169
+ private logger;
170
+ constructor(mapName: string, redis: FastifyInstance["redis"], logger: FastifyInstance["log"]);
171
+ /**
172
+ * Set a field in the hash map
173
+ * @param field Hash field name
174
+ * @param value Value to set
175
+ */
176
+ set<T>(field: string, value: T): Promise<void>;
177
+ /**
178
+ * Get a field from the hash map
179
+ * @param field Hash field name
180
+ * @returns Promise<T | null> The field value or null if not found
181
+ */
182
+ get<T>(field: string): Promise<T | null>;
183
+ /**
184
+ * Get all fields and values from the hash map
185
+ * @returns Promise<Record<string, string>> All field-value pairs
186
+ */
187
+ getAll(): Promise<Record<string, string>>;
188
+ /**
189
+ * Delete a field from the hash map
190
+ * @param field Hash field name
191
+ * @returns Promise<boolean> true if field was deleted
192
+ */
193
+ delete(field: string): Promise<boolean>;
194
+ /**
195
+ * Check if a field exists in the hash map
196
+ * @param field Hash field name
197
+ * @returns Promise<boolean> true if field exists
198
+ */
199
+ exists(field: string): Promise<boolean>;
200
+ /**
201
+ * Get all field names in the hash map
202
+ * @returns Promise<string[]> Array of field names
203
+ */
204
+ getKeys(): Promise<string[]>;
205
+ /**
206
+ * Get the number of fields in the hash map
207
+ * @returns Promise<number> Number of fields
208
+ */
209
+ size(): Promise<number>;
210
+ }
211
+ declare const _default: (fastify: FastifyInstance) => Promise<void>;
212
+ export default _default;
213
+ //# sourceMappingURL=redis.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.repository.d.ts","sourceRoot":"","sources":["../src/redis.repository.ts"],"names":[],"mappings":"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"}