emoji-picker-element/src/database/migrations.js

36 lines
1.0 KiB
JavaScript

import {
FIELD_GROUP, FIELD_ORDER, FIELD_UNICODE,
FIELD_TOKENS,
INDEX_GROUP_AND_ORDER,
STORE_EMOJI,
STORE_KEYVALUE,
STORE_FAVORITES,
INDEX_TOKENS, INDEX_COUNT, INDEX_SKIN_UNICODE, FIELD_SKIN_UNICODE
} from './constants'
function initialMigration (db) {
function createObjectStore (name, keyPath, indexes) {
const store = keyPath
? db.createObjectStore(name, { keyPath })
: db.createObjectStore(name)
if (indexes) {
for (const [indexName, [keyPath, multiEntry]] of Object.entries(indexes)) {
store.createIndex(indexName, keyPath, { multiEntry })
}
}
return store
}
createObjectStore(STORE_KEYVALUE)
createObjectStore(STORE_EMOJI, /* keyPath */ FIELD_UNICODE, {
[INDEX_TOKENS]: [FIELD_TOKENS, /* multiEntry */ true],
[INDEX_GROUP_AND_ORDER]: [[FIELD_GROUP, FIELD_ORDER]],
[INDEX_SKIN_UNICODE]: [FIELD_SKIN_UNICODE, /* multiEntry */ true]
})
createObjectStore(STORE_FAVORITES, undefined, {
[INDEX_COUNT]: ['']
})
}
export { initialMigration }