Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 0be1baf

Browse files
Merge pull request #4 from dodgeblaster/prefix-name
Add prefix to generated table name
2 parents c075821 + 821f5cc commit 0be1baf

File tree

3 files changed

+1401
-7
lines changed

3 files changed

+1401
-7
lines changed

‎README.md‎

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ Easily provision AWS DynamoDB tables using [Serverless Components](https://githu
1111

1212
 
1313

14-
1514
### 1. Install
1615

1716
```shell
@@ -33,15 +32,15 @@ AWS_ACCESS_KEY_ID=XXX
3332
AWS_SECRET_ACCESS_KEY=XXX
3433
```
3534

36-
3735
### 3. Configure
3836

3937
```yml
4038
# serverless.yml
4139

4240
myTable:
43-
component: "@serverless/aws-dynamodb"
41+
component: '@serverless/aws-dynamodb'
4442
inputs:
43+
name: nameOfTable # optional
4544
attributeDefinitions:
4645
- AttributeName: id
4746
AttributeType: S
@@ -62,4 +61,3 @@ $ serverless
6261
### New to Components?
6362

6463
Checkout the [Serverless Components](https://github.com/serverless/components) repo for more information.
65-

‎serverless.js‎

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,33 @@ const defaults = {
1818
KeyType: 'HASH'
1919
}
2020
],
21+
name: false,
2122
region: 'us-east-1'
2223
}
2324

25+
const setTableName = (component, inputs, config) => {
26+
const generatedName = inputs.name
27+
? `${inputs.name}-${component.context.resourceId()}`
28+
: component.context.resourceId()
29+
30+
const hasDeployedBefore = 'nameInput' in component.state
31+
const givenNameHasNotChanged =
32+
component.state.nameInput && component.state.nameInput === inputs.name
33+
const bothLastAndCurrentDeployHaveNoNameDefined = !component.state.nameInput && !inputs.name
34+
35+
config.name =
36+
hasDeployedBefore && (givenNameHasNotChanged || bothLastAndCurrentDeployHaveNoNameDefined)
37+
? component.state.name
38+
: generatedName
39+
40+
component.state.nameInput = inputs.name || false
41+
}
42+
2443
class AwsDynamoDb extends Component {
2544
async default(inputs = {}) {
2645
this.context.status('Deploying')
2746
const config = mergeDeepRight(defaults, inputs)
2847

29-
config.name = this.state.name || this.context.resourceId()
30-
3148
this.context.debug(
3249
`Starting deployment of table ${config.name} in the ${config.region} region.`
3350
)
@@ -41,7 +58,9 @@ class AwsDynamoDb extends Component {
4158
`Checking if table ${config.name} already exists in the ${config.region} region.`
4259
)
4360

44-
const prevTable = await describeTable({ dynamodb, name: config.name })
61+
setTableName(this, inputs, config)
62+
63+
const prevTable = await describeTable({ dynamodb, name: this.state.name })
4564

4665
if (!prevTable) {
4766
this.context.status('Creating')

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /