-
Notifications
You must be signed in to change notification settings - Fork 0
/
table-promises.js
134 lines (110 loc) · 4.62 KB
/
table-promises.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
var azure = require("azure");
var q = require("q");
var unboundSlice = Array.prototype.slice;
var slice = Function.prototype.call.bind(unboundSlice);
q.defer.prototype.makeAzureResolver = function() {
var self = this;
return function() {
if(arguments[0]) self.reject(arguments[0]);
else self.resolve.apply(self, slice(arguments,1));
};
};
var PromiseTableService = function (storageAccountOrConnectionString, storageAccessKey, host, authenticationProvider) {
/**
* Returns a PromiseTableService - an azure TableService with each method
* wrapped as a promise.
*
* @field
* @type TableService
*/
this.tableService = azure.createTableService(storageAccountOrConnectionString, storageAccessKey, host, authenticationProvider);
};
PromiseTableService.prototype.getServiceProperties = function (options) {
var d = q.defer();
this.tableService.getServiceProperties(options, d.makeAzureResolver());
return d.promise;
};
PromiseTableService.prototype.setServiceProperties = function (serviceProperties, options) {
var d = q.defer();
this.tableService.setServiceProperties(serviceProperties, options, d.makeAzureResolver());
return d.promise;
};
PromiseTableService.prototype.getTable = function (table, options) {
var d = q.defer();
this.tableService.getTable(table, options, d.makeAzureResolver());
return d.promise;
};
/**
* Creates a new table.
*
* @param {string} [table] The table to create.
*/
PromiseTableService.prototype.createTable = function (table, options) {
var d = q.defer();
this.tableService.createTable(table, options, d.makeAzureResolver());
return d.promise;
};
PromiseTableService.prototype.createTableIfNotExists = function (table, options) {
var d = q.defer();
this.tableService.createTableIfNotExists(table, options, d.makeAzureResolver());
return d.promise;
};
PromiseTableService.prototype.deleteTable = function (table, options) {
var d = q.defer();
this.tableService.deleteTable(table, options, d.makeAzureResolver());
return d.promise;
};
PromiseTableService.prototype.queryTables = function (options) {
var d = q.defer();
this.tableService.queryTables(options, d.makeAzureResolver());
return d.promise;
};
PromiseTableService.prototype.createTable = function (table, options) {
var d = q.defer();
this.tableService.createTable(table, options, d.makeAzureResolver());
return d.promise;
};
PromiseTableService.prototype.queryEntity = function (table, partitionKey, rowKey, options) {
var d = q.defer();
this.tableService.queryEntity(table, partitionKey, rowKey, options, d.makeAzureResolver());
return d.promise;
};
PromiseTableService.prototype.queryEntities = function (tableQuery, options) {
var d = q.defer();
this.tableService.queryEntities(tableQuery, options, d.makeAzureResolver());
return d.promise;
};
PromiseTableService.prototype.insertEntity = function (tableName, entityDescriptor, options) {
var d = q.defer();
this.tableService.insertEntity(tableName, entityDescriptor, options, d.makeAzureResolver());
return d.promise;
};
PromiseTableService.prototype.insertOrReplaceEntity = function (tableName, entityDescriptor, options) {
var d = q.defer();
this.tableService.insertOrReplaceEntity(tableName, entityDescriptor, options, d.makeAzureResolver());
return d.promise;
};
PromiseTableService.prototype.updateEntity = function (tableName, entityDescriptor, options) {
var d = q.defer();
this.tableService.updateEntity(tableName, entityDescriptor, options, d.makeAzureResolver());
return d.promise;
};
PromiseTableService.prototype.mergeEntity = function (tableName, entityDescriptor, options) {
var d = q.defer();
this.tableService.mergeEntity(tableName, entityDescriptor, options, d.makeAzureResolver());
return d.promise;
};
PromiseTableService.prototype.insertOrMergeEntity = function (tableName, entityDescriptor, options) {
var d = q.defer();
this.tableService.insertOrMergeEntity(tableName, entityDescriptor, options, d.makeAzureResolver());
return d.promise;
};
PromiseTableService.prototype.deleteEntity = function (tableName, entityDescriptor, options) {
var d = q.defer();
this.tableService.deleteEntity(tableName, entityDescriptor, options, d.makeAzureResolver());
return d.promise;
};
exports.PromiseTableService = PromiseTableService;
exports.createTableService = function (storageAccountOrConnectionString, storageAccessKey, host, authenticationProvider) {
return new exports.PromiseTableService(storageAccountOrConnectionString, storageAccessKey, host, authenticationProvider);
};