@katesthings/smartstate
Version:
AWS Lambda utilities to store and retrieve in DynamoDB for SmartThings SmartApps
156 lines (155 loc) • 5.04 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
const { DynamoDBClient, GetItemCommand, PutItemCommand } = require("@aws-sdk/client-dynamodb");
const dbclient = new DynamoDBClient({ region: 'us-west-2' });
const contextTable = 'smartapp-context-store';
const homeSettings = 'smartapp-home-settings';
function getState(context, name) {
return __awaiter(this, void 0, void 0, function* () {
const appId = context.installedAppId;
const params = {
TableName: 'smartapp-context-store',
Key: {
appId: { S: appId },
name: { S: name },
},
ProjectionExpression: 'stateValue',
};
try {
const data = yield dbclient.send(new GetItemCommand(params));
return data.Item.stateValue.S;
}
catch (err) {
console.error('getState - error: ', err);
}
});
}
;
function putState(context, name, value) {
return __awaiter(this, void 0, void 0, function* () {
const appId = context.installedAppId;
const params = {
TableName: 'smartapp-context-store',
Item: {
appId: { S: appId },
name: { S: name },
stateValue: { S: value },
},
};
try {
const data = yield dbclient.send(new PutItemCommand(params));
}
catch (err) {
console.error('putState - error: ', err);
}
});
}
;
function getValue(table, key) {
return __awaiter(this, void 0, void 0, function* () {
const params = {
TableName: table,
Key: {
key: { S: key }
},
ProjectionExpression: 'keyValue'
};
try {
const data = yield dbclient.send(new GetItemCommand(params));
return data.Item.keyValue.S;
}
catch (err) {
console.error('getValue - error: ', err);
}
});
}
;
function putValue(table, key, value) {
return __awaiter(this, void 0, void 0, function* () {
const params = {
TableName: table,
Item: {
key: { S: key },
keyValue: { S: value },
},
};
try {
const data = yield dbclient.send(new PutItemCommand(params));
console.log('Data stored in DynamoDB: ', data);
}
catch (err) {
console.error('putValue - error: ', err);
}
});
}
;
function getHomeMode(homeName, modeType) {
return __awaiter(this, void 0, void 0, function* () {
const params = {
TableName: 'smartapp-home-settings',
Key: {
homeName: { S: homeName },
modeType: { S: modeType },
},
ProjectionExpression: 'modeValue',
};
try {
const data = yield dbclient.send(new GetItemCommand(params));
return data.Item.modeValue.S;
}
catch (err) {
console.error('getHomeMode - error: ', err);
}
});
}
;
function putHomeMode(homeName, modeType, modeValue) {
return __awaiter(this, void 0, void 0, function* () {
const params = {
TableName: 'smartapp-home-settings',
Item: {
homeName: { S: homeName },
modeType: { S: modeType },
modeValue: { S: modeValue },
},
};
try {
const data = yield dbclient.send(new PutItemCommand(params));
}
catch (err) {
console.error('putHomeMode - error: ', err);
}
});
}
;
function isHomeActive(homeName) {
return __awaiter(this, void 0, void 0, function* () {
var bActive;
if (homeName) {
const homeOccupiedMode = yield getHomeMode(homeName, 'occupancy');
try {
bActive = (homeOccupiedMode === 'active');
}
catch (err) {
console.log('isHomeActive - invalid dynamoDB response: ', err);
bActive = true;
}
}
return bActive;
});
}
;
exports.getState = getState;
exports.putState = putState;
exports.getValue = getValue;
exports.putValue = putValue;
exports.getHomeMode = getHomeMode;
exports.putHomeMode = putHomeMode;
exports.isHomeActive = isHomeActive;