|
1 | 1 | import Utils from '../utils' |
| 2 | +import { deprecated } from '../decorators' |
| 3 | + |
| 4 | +import { |
| 5 | + incrementAndGet, |
| 6 | + decrementAndGet, |
| 7 | + get, |
| 8 | + getAndIncrement, |
| 9 | + getAndDecrement, |
| 10 | + getAndAdd, |
| 11 | + addAndGet, |
| 12 | + compareAndSet, |
| 13 | + reset |
| 14 | +} from './methods' |
2 | 15 |
|
3 | | -import Counters from './counters' |
4 | 16 |
|
5 | 17 | export default class Counter { |
6 | 18 | constructor(name) { |
7 | | - if (!name) { |
8 | | - throw new Error('Missing value for the "counterName" argument. The argument must contain a string value.') |
9 | | - } |
10 | | - |
11 | | - if (!Utils.isString(name)) { |
12 | | - //TODO: fix me |
13 | | - throw new Error('Invalid value for the "name" argument. The argument must contain only string values') |
| 19 | + if (!name || !Utils.isString(name)) { |
| 20 | + throw new Error('Counter Name must be non empty String') |
14 | 21 | } |
15 | 22 |
|
16 | 23 | this.name = name |
17 | 24 | } |
18 | 25 | } |
19 | 26 |
|
20 | | -const proxyToCounters = method => function(...args){ |
21 | | - return Counters[method](this.name, ...args) |
22 | | -} |
| 27 | +const withCounterName = method => (...args) => method(this.name, ...args) |
| 28 | + |
| 29 | +//TODO: will be removed when remove sync methods |
| 30 | +const namespaceLabel = 'Backendless.Counter.of(<CounterName>)' |
| 31 | + |
23 | 32 |
|
24 | 33 | Object.setPrototypeOf(Counter.prototype, { |
25 | 34 |
|
26 | | - incrementAndGet: proxyToCounters('incrementAndGet'), |
27 | | - incrementAndGetSync: proxyToCounters('incrementAndGetSync'), |
| 35 | + @deprecated(namespaceLabel, `${namespaceLabel}.incrementAndGet`) |
| 36 | + incrementAndGetSync: Utils.synchronized(withCounterName(incrementAndGet)), |
| 37 | + incrementAndGet : Utils.promisified(withCounterName(incrementAndGet)), |
28 | 38 |
|
29 | | - getAndIncrement: proxyToCounters('getAndIncrement'), |
30 | | - getAndIncrementSync: proxyToCounters('getAndIncrementSync'), |
| 39 | + @deprecated(namespaceLabel, `${namespaceLabel}.getAndIncrement`) |
| 40 | + getAndIncrementSync: Utils.synchronized(withCounterName(getAndIncrement)), |
| 41 | + getAndIncrement : Utils.promisified(withCounterName(getAndIncrement)), |
31 | 42 |
|
32 | | - decrementAndGet: proxyToCounters('decrementAndGet'), |
33 | | - decrementAndGetSync: proxyToCounters('decrementAndGetSync'), |
| 43 | + @deprecated(namespaceLabel, `${namespaceLabel}.decrementAndGet`) |
| 44 | + decrementAndGetSync: Utils.synchronized(withCounterName(decrementAndGet)), |
| 45 | + decrementAndGet : Utils.promisified(withCounterName(decrementAndGet)), |
34 | 46 |
|
35 | | - getAndDecrement: proxyToCounters('getAndDecrement'), |
36 | | - getAndDecrementSync: proxyToCounters('getAndDecrementSync'), |
| 47 | + @deprecated(namespaceLabel, `${namespaceLabel}.getAndDecrement`) |
| 48 | + getAndDecrementSync: Utils.synchronized(withCounterName(getAndDecrement)), |
| 49 | + getAndDecrement : Utils.promisified(withCounterName(getAndDecrement)), |
37 | 50 |
|
38 | | - reset: proxyToCounters('reset'), |
39 | | - resetSync: proxyToCounters('resetSync'), |
| 51 | + @deprecated(namespaceLabel, `${namespaceLabel}.reset`) |
| 52 | + resetSync: Utils.synchronized(withCounterName(reset)), |
| 53 | + reset : Utils.promisified(withCounterName(reset)), |
40 | 54 |
|
41 | | - get: proxyToCounters('get'), |
42 | | - getSync: proxyToCounters('getSync'), |
| 55 | + @deprecated(namespaceLabel, `${namespaceLabel}.get`) |
| 56 | + getSync: Utils.synchronized(withCounterName(get)), |
| 57 | + get : Utils.promisified(withCounterName(get)), |
43 | 58 |
|
44 | | - addAndGet: proxyToCounters('addAndGet'), |
45 | | - addAndGetSync: proxyToCounters('addAndGetSync'), |
| 59 | + @deprecated(namespaceLabel, `${namespaceLabel}.addAndGet`) |
| 60 | + addAndGetSync: Utils.synchronized(withCounterName(addAndGet)), |
| 61 | + addAndGet : Utils.promisified(withCounterName(addAndGet)), |
46 | 62 |
|
47 | | - getAndAdd: proxyToCounters('getAndAdd'), |
48 | | - getAndAddSync: proxyToCounters('getAndAddSync'), |
| 63 | + @deprecated(namespaceLabel, `${namespaceLabel}.getAndAdd`) |
| 64 | + getAndAddSync: Utils.synchronized(withCounterName(getAndAdd)), |
| 65 | + getAndAdd : Utils.promisified(withCounterName(getAndAdd)), |
49 | 66 |
|
50 | | - compareAndSet: proxyToCounters('compareAndSet'), |
51 | | - compareAndSetSync: proxyToCounters('compareAndSetSync'), |
| 67 | + @deprecated(namespaceLabel, `${namespaceLabel}.compareAndSet`) |
| 68 | + compareAndSetSync: Utils.synchronized(withCounterName(compareAndSet)), |
| 69 | + compareAndSet : Utils.promisified(withCounterName(compareAndSet)), |
52 | 70 |
|
53 | 71 | }) |
54 | 72 |
|
0 commit comments