@@ -8,25 +8,25 @@ const log = require('debug')('ipfs-repo-migrations:migration-8')
88
99const KEY_PREFIX = 'key_'
1010
11- function encode ( name ) {
11+ function encode ( name ) {
1212 name = Buffer . from ( name )
13- const encoder = new base32 . Encoder ( { type : "rfc4648" } ) ;
13+ const encoder = new base32 . Encoder ( { type : "rfc4648" } )
1414 return ( KEY_PREFIX + encoder . finalize ( name ) ) . toLowerCase ( )
1515}
1616
17- function decode ( name ) {
17+ function decode ( name ) {
1818 log ( name )
1919 if ( ! name . startsWith ( KEY_PREFIX ) ) {
2020 throw Error ( "Unknown format of key's name!" )
2121 }
2222
23- const decoder = new base32 . Decoder ( { type : "rfc4648" } ) ;
23+ const decoder = new base32 . Decoder ( { type : "rfc4648" } )
2424 return decoder . finalize ( name . replace ( KEY_PREFIX , '' ) . toUpperCase ( ) )
2525}
2626
27- async function processFolder ( store , prefix , fileNameProcessor ) {
27+ async function processFolder ( store , prefix , fileNameProcessor ) {
2828 const query = {
29- prefix : `/${ prefix } ` ,
29+ prefix : `/${ prefix } `
3030 }
3131
3232 const files = await store . query ( query )
@@ -41,9 +41,18 @@ async function processFolder(store, prefix, fileNameProcessor) {
4141 }
4242}
4343
44- async function migrate ( repoPath , isBrowser ) {
45- const store = new Datastore ( path . join ( repoPath , 'keys' ) , { extension : '.data' , createIfMissing : false } )
46- store . open ( )
44+ async function migrate ( repoPath , options , isBrowser ) {
45+ let storageBackend
46+ if ( options !== undefined
47+ && options [ 'storageBackends' ] !== undefined
48+ && options [ 'storageBackends' ] [ 'keys' ] !== undefined
49+ ) {
50+ storageBackend = options [ 'storageBackends' ] [ 'keys' ]
51+ } else {
52+ storageBackend = Datastore
53+ }
54+
55+ const store = new storageBackend ( path . join ( repoPath , 'keys' ) , { extension : '.data' } )
4756 try {
4857 const info = processFolder ( store , 'info' , encode )
4958 const data = processFolder ( store , 'pkcs8' , encode )
@@ -54,10 +63,18 @@ async function migrate(repoPath, isBrowser) {
5463 }
5564}
5665
57- async function revert ( repoPath , isBrowser ) {
58- const store = new Datastore ( path . join ( repoPath , 'keys' ) , { extension : '.data' , createIfMissing : false } )
59- store . open ( )
66+ async function revert ( repoPath , options , isBrowser ) {
67+ let storageBackend
68+ if ( options !== undefined
69+ && options [ 'storageBackends' ] !== undefined
70+ && options [ 'storageBackends' ] [ 'keys' ] !== undefined
71+ ) {
72+ storageBackend = options [ 'storageBackends' ] [ 'keys' ]
73+ } else {
74+ storageBackend = Datastore
75+ }
6076
77+ const store = new storageBackend ( path . join ( repoPath , 'keys' ) , { extension : '.data' } )
6178 try {
6279 const info = processFolder ( store , 'info' , decode )
6380 const data = processFolder ( store , 'pkcs8' , decode )
@@ -73,5 +90,5 @@ module.exports = {
7390 description : 'Transforms key\'s names into base32 encoding.' ,
7491 reversible : true ,
7592 migrate,
76- revert,
93+ revert
7794}
0 commit comments