Skip to content

Commit 44d3d11

Browse files
committed
enable old storage api until the migrations has been finalized
1 parent fbc592a commit 44d3d11

File tree

6 files changed

+75
-5
lines changed

6 files changed

+75
-5
lines changed

packages/backend/src/persistance/getDatabase.ts

+7
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ export async function getDatabase(_redis?: Redis): Promise<IDatabase> {
6969
//Storage
7070
getUserStorageChunk: Storage.getUserStorageChunk(redis),
7171
setUserStorageChunk: Storage.setUserStorageChunk(redis),
72+
//Legacy remove after storage has been merged
73+
getUserStorage: Storage.getUserStorageOld(redis),
74+
setUserStorage: Storage.setUserStorageOld(redis),
75+
7276
//Pending
7377
addPending: Pending.addPending(redis),
7478
getPending: Pending.getPending(redis),
@@ -119,6 +123,9 @@ export interface IDatabase {
119123
key: string,
120124
data: string,
121125
) => Promise<void>;
126+
//Legacy remove after storage has been merged
127+
getUserStorage: (ensName: string) => Promise<UserStorage | null>;
128+
setUserStorage: (ensName: string, data: string) => Promise<void>;
122129
setAliasSession: (ensName: string, aliasEnsName: string) => Promise<void>;
123130
addPending: (ensName: string, contactEnsName: string) => Promise<void>;
124131
getPending: (ensName: string) => Promise<string[]>;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { Redis, RedisPrefix } from '../getDatabase';
2+
import { UserStorage } from '@dm3-org/dm3-lib-storage';
3+
import { getIdEnsName } from '../getIdEnsName';
4+
5+
//Bring the old storage api temporarily back to allow testing without breaking changes
6+
//Remove as soon a storage is fully migrated
7+
export function getUserStorageOld(redis: Redis) {
8+
return async (ensName: string): Promise<UserStorage | null> => {
9+
const userStorage = await redis.get(
10+
RedisPrefix.UserStorage + (await getIdEnsName(redis)(ensName)),
11+
);
12+
return userStorage ? JSON.parse(userStorage) : null;
13+
};
14+
}
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
import { setUserStorageChunk } from './setUserStorage';
22
import { getUserStorageChunk } from './getUserStorage';
33

4-
export default { setUserStorageChunk, getUserStorageChunk };
4+
import { getUserStorageOld } from './getUserStorageOld';
5+
import { setUserStorageOld } from './setUserStorageOld';
6+
7+
export default {
8+
setUserStorageChunk,
9+
getUserStorageChunk,
10+
getUserStorageOld,
11+
setUserStorageOld,
12+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { stringify } from '@dm3-org/dm3-lib-shared';
2+
import { Redis, RedisPrefix } from '../getDatabase';
3+
import { getIdEnsName } from '../getIdEnsName';
4+
5+
export function setUserStorageOld(redis: Redis) {
6+
return async (ensName: string, data: string): Promise<void> => {
7+
await redis.set(
8+
RedisPrefix.UserStorage + (await getIdEnsName(redis)(ensName)),
9+
stringify(data),
10+
);
11+
};
12+
}

packages/backend/src/storage.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ describe('Storage', () => {
6262
'0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1',
6363
};
6464
const { status } = await request(app)
65-
.get(`/bob.eth/123`)
65+
.get(`/new/bob.eth/123`)
6666
.set({
6767
authorization: `Bearer ${token}`,
6868
})
@@ -103,7 +103,7 @@ describe('Storage', () => {
103103
};
104104

105105
const { status } = await request(app)
106-
.post(`/bob.eth/123`)
106+
.post(`/new/bob.eth/123`)
107107
.set({
108108
authorization: `Bearer ${token}`,
109109
})

packages/backend/src/storage.ts

+31-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export default () => {
1111
router.use(cors());
1212
router.param('ensName', auth);
1313

14-
router.get('/:ensName/:key', async (req, res, next) => {
14+
router.get('/new/:ensName/:key', async (req, res, next) => {
1515
try {
1616
const ensName = normalizeEnsName(req.params.ensName);
1717
const userStorage = await req.app.locals.db.getUserStorageChunk(
@@ -24,7 +24,7 @@ export default () => {
2424
}
2525
});
2626

27-
router.post('/:ensName/:key', async (req, res, next) => {
27+
router.post('/new/:ensName/:key', async (req, res, next) => {
2828
try {
2929
const ensName = normalizeEnsName(req.params.ensName);
3030

@@ -42,5 +42,34 @@ export default () => {
4242
}
4343
});
4444

45+
router.get('/:ensName', async (req, res, next) => {
46+
try {
47+
const account = normalizeEnsName(req.params.ensName);
48+
const userStorage = await req.app.locals.db.getUserStorageOld(
49+
account,
50+
);
51+
return res.json(userStorage);
52+
} catch (e) {
53+
next(e);
54+
}
55+
});
56+
57+
router.post('/:ensName', async (req, res, next) => {
58+
try {
59+
const account = normalizeEnsName(req.params.ensName);
60+
61+
await req.app.locals.db.setUserStorage(
62+
account,
63+
stringify(req.body)!,
64+
);
65+
66+
res.json({
67+
timestamp: new Date().getTime(),
68+
});
69+
} catch (e) {
70+
next(e);
71+
}
72+
});
73+
4574
return router;
4675
};

0 commit comments

Comments
 (0)