Passed
Pull Request — master (#92)
by Mark
01:32
created

src/Store/Connection/Adapter/LocalStorageAdapter.ts   A

Complexity

Total Complexity 11
Complexity/F 1.22

Size

Lines of Code 53
Function Count 9

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 39
dl 0
loc 53
rs 10
c 0
b 0
f 0
wmc 11
mnd 2
bc 2
fnc 9
bpm 0.2222
cpm 1.2222
noi 0

9 Functions

Rating   Name   Duplication   Size   Complexity  
A LocalStorageAdapter.all 0 3 1
A LocalStorageAdapter.post 0 3 1
A LocalStorageAdapter.getTableFromLocalStorage 0 3 3
A LocalStorageAdapter.load 0 3 1
A LocalStorageAdapter.get 0 3 1
A LocalStorageAdapter.getLocalStorageKey 0 3 1
A LocalStorageAdapter.put 0 3 1
A LocalStorageAdapter.delete 0 3 1
A LocalStorageAdapter.patch 0 3 1
1
import {
2
    ModelInterface,
3
    AdapterSettings,
4
    AdapterInterface
5
} from "../../../JeloquentInterfaces";
6
import QueueMessage from "../Queue/QueueMessage";
7
8
/**
9
 *
10
 */
11
export default class LocalStorageAdapter implements AdapterInterface {
12
    connectionSettings: AdapterSettings;
13
14
    constructor (connectionSettings: AdapterSettings) {
15
        this.connectionSettings = connectionSettings;
16
    }
17
18
    all(model: ModelInterface): Promise<QueueMessage> {
19
        return Promise.resolve(new QueueMessage(model, 'aSyncUpdate', this.getTableFromLocalStorage(model)));
20
    }
21
22
    delete(model: ModelInterface): Promise<QueueMessage> {
23
        return Promise.resolve(new QueueMessage(model, 'aSyncUpdate', this.getTableFromLocalStorage(model)));
24
    }
25
26
    get(model: ModelInterface): Promise<QueueMessage> {
27
        return Promise.resolve(new QueueMessage(model, 'aSyncUpdate', this.getTableFromLocalStorage(model)));
28
    }
29
30
    load(model: ModelInterface): Promise<QueueMessage> {
31
        return Promise.resolve(new QueueMessage(model, 'aSyncInsert', this.getTableFromLocalStorage(model)));
32
    }
33
34
    patch(model: ModelInterface): Promise<QueueMessage> {
35
        return Promise.resolve(new QueueMessage(model, 'aSyncUpdate', this.getTableFromLocalStorage(model)));
36
    }
37
38
    post (model: ModelInterface): Promise<QueueMessage> {
39
        return Promise.resolve(new QueueMessage(model, 'aSyncInsert', this.getTableFromLocalStorage(model)));
40
    }
41
42
    put(model: ModelInterface): Promise<QueueMessage> {
43
        return Promise.resolve(new QueueMessage(model, 'aSyncUpdate', this.getTableFromLocalStorage(model)));
44
    }
45
46
    private getLocalStorageKey(model) {
47
        return `jeloquent-${globalThis.Store.useDatabase}-${model.className}`;
48
    }
49
50
    private getTableFromLocalStorage(model) {
51
        return JSON.parse(localStorage.getItem(this.getLocalStorageKey(model)) ?? '[]');
52
    }
53
}