UNPKG

@katesthings/smartstate

Version:

AWS Lambda utilities to store and retrieve in DynamoDB for SmartThings SmartApps

156 lines (155 loc) 5.04 kB
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;