xaases 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eb9556e3367b7df995d7252a29fdae6c57250841715979f3f8675246725241b7
4
- data.tar.gz: c2acf6a3e7ebace685157d21aedd8598d340dbf3a05581f0b502aba0a115955f
3
+ metadata.gz: 3684fb4858709d60739e6cac8bcd89d268c2ca9f14dc8d764b4c48bc24ff3416
4
+ data.tar.gz: 55e17d9d5c5f8ebd3585b073834407426dc923d77d3f6b047ba944dbc83b1517
5
5
  SHA512:
6
- metadata.gz: 7ac3daed57eca40918178850922fca759bc42922a4050ccd881d99e4bedb2d7bdd5daffb841a98df3eb55be3bfb5c6f0c776f3a801d45c72d8c89430d54ec88a
7
- data.tar.gz: 453bd28db844b82204810e1eeb913ea02f0c4301d665c48c028a0f3f4c6129b41c7c228b1fb7d9eb56da298c22641904779e532348c9dae00972f0830aafc706
6
+ metadata.gz: e32dbdd2c7536960700215d6981f4f95c83e14c7107665129e3a5c759f14d277e3faa8942d72191c4072d9fe42ff059def75aeac7d8066ddbc4bc4f020bd461a
7
+ data.tar.gz: 0edc73e54643a28aad13f456afb28027a653d3b6ab62a60d812fb5639a76a0445125253985ed6934f9d32ec853f26f99c8e30bc884c2bd6be0e95be2bd970e26
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- xaases (0.1.0)
4
+ xaases (0.1.1)
5
5
  highline (~> 2.0, >= 2.0.0)
6
6
 
7
7
  GEM
data/exe/xaases CHANGED
@@ -1,3 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
  require "bundler/setup"
3
+ require "xaases/version"
4
+ require "xaases/name"
3
5
  require "xaases/cli"
@@ -0,0 +1,40 @@
1
+ require 'xaases/js'
2
+ module Xaases
3
+ module Aws
4
+ class LambdaJs
5
+ def initialize
6
+ @js = Xaases::Js.new
7
+ @js.strict!
8
+ @js.const(aws: "require('aws-sdk')")
9
+ end
10
+
11
+ def use_dynamo!
12
+ @js.const(dyn: 'new aws.DynamoDB()')
13
+ end
14
+
15
+ def export(name, content)
16
+ f = Xaases::Js::Function.new(:eve, :ctx, :cb)
17
+ @js.export(name, f)
18
+ end
19
+
20
+ def res(status, content)
21
+ #err = err ? err : 'null'
22
+ body = Xaases::Js.new.hash('statusCode' => status, 'body' => content)
23
+ @js.call :callback, 'null', body
24
+ end
25
+
26
+ def put(table, data, handler)
27
+ params = {
28
+ 'TableName' => "'#{table}'",
29
+ 'Item' => Xaases::Js.new.hash(data)
30
+ }
31
+ params_js = Xaases::Js.new.hash(params)
32
+ @js.call :put, params_js, handler
33
+ end
34
+
35
+ def render
36
+ @js
37
+ end
38
+ end
39
+ end
40
+ end
data/lib/xaases/cli.rb CHANGED
@@ -15,6 +15,11 @@ begin
15
15
  sls.add_resource name, Xaases::Aws::Dynamodb.new(*options).to_hash
16
16
  sls.write
17
17
  #`sls deploy`
18
+ when 'func'
19
+ sls = Xaases::Serverless::Yaml.new('serverless.yml', 'xaases')
20
+ sls.add_function *options
21
+ sls.write
22
+ #`sls deploy`
18
23
  when 'init', 'touch'
19
24
  require 'xaases/cli/init'
20
25
  else
@@ -0,0 +1,4 @@
1
+ module Xaases
2
+ class Function
3
+ end
4
+ end
@@ -0,0 +1,16 @@
1
+ module Xaases
2
+ class Js
3
+ class Function
4
+ attr_reader :params
5
+
6
+ def initialize(*params)
7
+ @params = params
8
+ @s = ''
9
+ end
10
+
11
+ def render
12
+ @s
13
+ end
14
+ end
15
+ end
16
+ end
data/lib/xaases/js.rb ADDED
@@ -0,0 +1,50 @@
1
+ require 'xaases/js/function'
2
+ module Xaases
3
+ class Js
4
+ def initialize
5
+ @s = ''
6
+ end
7
+
8
+ def strict!
9
+ @s = "'use strict';"
10
+ end
11
+
12
+ def const(list)
13
+ @s += 'const ' + list.map do |key, value|
14
+ key.to_s + '=' + value.to_s
15
+ end.join(',') + ';'
16
+ end
17
+
18
+ def call(name, *params)
19
+ @s += "#{name}(#{params.join(',')});"
20
+ end
21
+
22
+ def hash(data)
23
+ @s += '{' + data.map do |key, value|
24
+ key.to_s + ':' + value.to_s
25
+ end.join(',') + '}'
26
+ end
27
+
28
+ def if(*conditions)
29
+ i = -1
30
+ conditions.map do |condition|
31
+ i += 1
32
+ if i == 0
33
+ 'if{' + condition + '}'
34
+ elsif i == conditions.length - 1
35
+ 'else{' + condition + '}'
36
+ else
37
+ 'elsif{' + condition + '}'
38
+ end
39
+ end.join
40
+ end
41
+
42
+ def export(name, f)
43
+ @s += "module.exports.#{name}=(#{f.params.join(',')})=>{#{f.render}};"
44
+ end
45
+
46
+ def render
47
+ @s
48
+ end
49
+ end
50
+ end
@@ -27,8 +27,11 @@ module Xaases
27
27
  @data['resources']['Resources'][name] = rs
28
28
  end
29
29
 
30
- def functions=(fns)
31
- @data['functions'] = fns
30
+ def add_function(file, name, path, method, fn)
31
+ @data['functions'][file] = {
32
+ 'handler' => "#{file}.#{name}",
33
+ 'events' => [{ 'http' => { 'path' => path, 'method' => method }}]
34
+ }
32
35
  end
33
36
 
34
37
  def write
@@ -1,3 +1,3 @@
1
1
  module Xaases
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xaases
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - myun2
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-28 00:00:00.000000000 Z
11
+ date: 2018-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: highline
@@ -74,17 +74,19 @@ files:
74
74
  - Rakefile
75
75
  - bin/console
76
76
  - bin/setup
77
- - event-store/events.js
78
- - event-store/serverless.yml
79
77
  - exe/xaases
80
78
  - lib/xaases.rb
81
79
  - lib/xaases/aws.rb
82
80
  - lib/xaases/aws/dynamodb.rb
81
+ - lib/xaases/aws/lambda_js.rb
83
82
  - lib/xaases/cli.rb
84
83
  - lib/xaases/cli/color.rb
85
84
  - lib/xaases/cli/help.rb
86
85
  - lib/xaases/cli/init.rb
87
86
  - lib/xaases/conf.rb
87
+ - lib/xaases/function.rb
88
+ - lib/xaases/js.rb
89
+ - lib/xaases/js/function.rb
88
90
  - lib/xaases/name.rb
89
91
  - lib/xaases/serverless.rb
90
92
  - lib/xaases/serverless/yaml.rb
@@ -1,24 +0,0 @@
1
- 'use strict';
2
-
3
- const AWS = require('aws-sdk'),
4
- db = new AWS.DynamoDB(),
5
- TABLE_NAME = 'event-store';
6
-
7
- const indexQueryParams = (organization) => (
8
- {
9
- TableName: TABLE_NAME,
10
- Item: event
11
- }
12
- );
13
-
14
- module.exports.create = (event, context, callback) => {
15
- console.log(event)
16
- db.put(putParams(event), (err, data) => {
17
- if (err) {
18
- callback(err);
19
- }
20
- else {
21
- callback(null, { statusCode: 200, body: 'OK' });
22
- }
23
- });
24
- };
@@ -1,47 +0,0 @@
1
- service: event-store
2
- provider:
3
- name: aws
4
- runtime: nodejs6.10
5
- region: ap-northeast-1
6
- profile: serverless-deploy
7
- iamRoleStatements:
8
- - Effect: Allow
9
- Action:
10
- - dynamodb:DescribeTable
11
- - dynamodb:Query
12
- - dynamodb:Scan
13
- - dynamodb:GetItem
14
- - dynamodb:PutItem
15
- - dynamodb:UpdateItem
16
- - dynamodb:DeleteItem
17
- Resource: "arn:aws:dynamodb:ap-northeast-1:*:table/event-store*"
18
- resources:
19
- Resources:
20
- ActivitiesDynamoDbTable:
21
- Type: 'AWS::DynamoDB::Table'
22
- Properties:
23
- TableName: event-store
24
- AttributeDefinitions:
25
- -
26
- AttributeName: resource_name
27
- AttributeType: S
28
- -
29
- AttributeName: resource_id
30
- AttributeType: S
31
- KeySchema:
32
- -
33
- AttributeName: resource_name
34
- KeyType: HASH
35
- -
36
- AttributeName: resource_id
37
- KeyType: RANGE
38
- ProvisionedThroughput:
39
- ReadCapacityUnits: 1
40
- WriteCapacityUnits: 1
41
- functions:
42
- root:
43
- handler: events.create
44
- events:
45
- - http:
46
- path: /events
47
- method: post