Skip to content

Commit

Permalink
fix: remove static dep on 'definitions' and 'serverless-yml'
Browse files Browse the repository at this point in the history
  • Loading branch information
mvayngrib committed Apr 30, 2018
1 parent d1f2a5b commit 74f2c29
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 10 deletions.
30 changes: 21 additions & 9 deletions src/db-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ import {
waitImmediate,
timeMethods,
traverse,
pluck
pluck,
defineGetter
} from './utils'

import { prettify, alphabetical, format } from './string-utils'
Expand Down Expand Up @@ -60,7 +61,6 @@ type BatchWorker = (batch:Batch) => Promise<boolean|void>
type ItemWorker = (item:any) => Promise<boolean|void>

const alwaysTrue = (...any) => true
const DEFINITIONS = require('./definitions')
const MAX_BATCH_SIZE = 25
const CONSISTENT_READ_EVERYTHING = true
const TABLE_BUCKET_REGEX = /-bucket-\d+$/
Expand Down Expand Up @@ -98,12 +98,22 @@ const renderDefinitions = ({ definitions, stackName }) => {
}

function createDBUtils ({ aws, logger, env }) {
const definitions = renderDefinitions({
definitions: DEFINITIONS,
stackName: env.STACK_NAME
})
const getDefinitions = (() => {
let definitions
return () => {
if (!definitions) {
definitions = renderDefinitions({
definitions: require('./definitions'),
stackName: env.STACK_NAME
})
}

const getDefinition = tableName => {
return definitions
}
})();

const getCachedDefinition = tableName => {
const definitions = getDefinitions()
const logicalId = Object.keys(definitions).find(logicalId => {
return definitions[logicalId].Properties.TableName === tableName
})
Expand All @@ -129,6 +139,7 @@ function createDBUtils ({ aws, logger, env }) {

let tableBuckets
const getTableBuckets = () => {
const definitions = getDefinitions()
if (!tableBuckets) {
tableBuckets = Object.keys(definitions)
.filter(logicalId => {
Expand Down Expand Up @@ -208,7 +219,7 @@ function createDBUtils ({ aws, logger, env }) {
tableAPI.client = aws.docClient
tableAPI.rawClient = aws.dynamodb
tableAPI.name = TableName
tableAPI.definition = getDefinition(TableName)
defineGetter(tableAPI, 'definition', () => getCachedDefinition(TableName))
tableAPI.batchProcess = ({ params={}, ...opts }) => {
return batchProcess({
params: { ...params, TableName },
Expand Down Expand Up @@ -341,6 +352,7 @@ function createDBUtils ({ aws, logger, env }) {
}

const getTableDefinition = async (TableName:string) => {
const definitions = getDefinitions()
if (definitions[TableName]) return definitions[TableName]

const { Table } = await aws.dynamodb.describeTable({ TableName }).promise()
Expand Down Expand Up @@ -544,7 +556,7 @@ function createDBUtils ({ aws, logger, env }) {
getModelMap,
getTableDefinition,
get definitions() {
return definitions
return getDefinitions()
}
}

Expand Down
7 changes: 6 additions & 1 deletion src/lambda-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import {
unitToMillis
} from './constants'

import serverlessYml from './cli/serverless-yml'
import PRICING from './lambda-pricing'

const defaultConcurrency = 1
Expand Down Expand Up @@ -112,7 +111,12 @@ export default class LambdaUtils {
return this.aws.lambda.getFunctionConfiguration({ FunctionName }).promise()
}

private get serverlessYml() {
return require('./cli/serverless-yml')
}

private requireLambdaByName = (shortName:string) => {
const { serverlessYml } = this
const { functions } = serverlessYml
const handlerExportPath = functions[shortName].handler
const lastDotIdx = handlerExportPath.lastIndexOf('.')
Expand All @@ -126,6 +130,7 @@ export default class LambdaUtils {

private invokeLocal = async (params:AWS.Lambda.InvocationRequest)
:Promise<AWS.Lambda.InvocationResponse> => {
const { serverlessYml } = this
const { FunctionName, InvocationType, Payload } = params
this.logger.debug(`invoking ${params.FunctionName} inside ${this.env.FUNCTION_NAME}`)
const shortName = this.env.getStackResourceShortName(FunctionName)
Expand Down

0 comments on commit 74f2c29

Please sign in to comment.