carraway 0.5.0 → 0.6.0

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: 630db530c2d4fd60f788682c30192399ff1715fe6c5ea9557e43731bb028d146
4
- data.tar.gz: 51488217d06c4711073d1d31cc4349a97e05bdbb9110b0bf89595079b2320e03
3
+ metadata.gz: 7413bee588bc81463c7f6157ec89072fa668e57fb3dc82a9ac44d9122dbf1f75
4
+ data.tar.gz: 882068dfc6f541197e5090bb06fbd1deba5c878888cdbe75c1e4e43e1966dbee
5
5
  SHA512:
6
- metadata.gz: db4b164f096d6937c5b9a5123b96ec3f22e7ac16a23a188c57a44e55175efef3b70ebe79eabef2a1dedc3f9863236d72e45508465eaacbb2672b565770fed2a2
7
- data.tar.gz: 0e2205c2da121dcfeb52d5f43200076e26ca4d7204fd7fdf3a63fa34b3f00037ea1bc0900c106128cda44b7ebdfd6c4a94fa08f9ce11db8758893ac58bfdc4ac
6
+ metadata.gz: 1f2ae24be1f374f31f169b0a4df78ef67d663930b2822c8a3f2383efa8dc73c41d3f8fa28de9a0948c5a5f493154b747b46a368643b2346ca36d098e1ea1996b
7
+ data.tar.gz: 21e46ee4e9f196e3eb3f8469c0931f4f9551a066388115c04b6d73d1e8d1e0213dee6b0dfb3428dc0dc4684773f9ba459a62e385236b8603d1db221b3caa6092
@@ -25,8 +25,8 @@ module Carraway
25
25
  @dir = dir
26
26
  end
27
27
 
28
- def fullpath(path)
29
- [@dir, path].join
28
+ def fullpath(uid)
29
+ [@dir, uid].join
30
30
  end
31
31
  end
32
32
  end
@@ -6,10 +6,10 @@ module Carraway
6
6
  def setup
7
7
  client.create_table(
8
8
  attribute_definitions: [
9
- { attribute_name: :path, attribute_type: "S" },
9
+ { attribute_name: :uid, attribute_type: "S" },
10
10
  ],
11
11
  key_schema: [
12
- { attribute_name: :path, key_type: "HASH" },
12
+ { attribute_name: :uid, key_type: "HASH" },
13
13
  ],
14
14
  provisioned_throughput: {
15
15
  read_capacity_units: 5, # FIXME configurable
@@ -23,13 +23,17 @@ module Carraway
23
23
  client.delete_table(table_name: Config.backend['table_name'])
24
24
  end
25
25
 
26
- def create(title:, path:, body:, category_key:, at: Time.now)
26
+ def generate_uid
27
+ [Time.now.strftime('%Y%m%d%H%M%S'), "%05d" % rand(10000)].join
28
+ end
29
+
30
+ def create(title:, body:, category_key:, at: Time.now)
27
31
  category = Category.find(category_key)
28
32
  # FIXME check path to prevent overwriting
29
33
  post = new(
34
+ uid: generate_uid,
30
35
  title: title,
31
36
  body: body,
32
- path: category.fullpath(path),
33
37
  category: category,
34
38
  created: at.to_i,
35
39
  updated: at.to_i,
@@ -52,9 +56,9 @@ module Carraway
52
56
 
53
57
  client.scan(query).items.map do |item|
54
58
  new(
59
+ uid: item['uid'],
55
60
  title: item['title'],
56
61
  body: item['body'],
57
- path: item['path'],
58
62
  category: Category.find(item['category']),
59
63
  created: Time.at(item['created']),
60
64
  updated: Time.at(item['updated']),
@@ -63,18 +67,18 @@ module Carraway
63
67
  end
64
68
  end
65
69
 
66
- def find(path)
70
+ def find(uid)
67
71
  item = client.get_item(
68
72
  key: {
69
- path: path
73
+ uid: uid
70
74
  },
71
75
  table_name: Config.backend['table_name'],
72
76
  ).item
73
77
  if item
74
78
  new(
79
+ uid: item['uid'],
75
80
  title: item['title'],
76
81
  body: item['body'],
77
- path: item['path'],
78
82
  category: Category.find(item['category']),
79
83
  created: Time.at(item['created']),
80
84
  updated: Time.at(item['updated']),
@@ -97,13 +101,13 @@ module Carraway
97
101
  end
98
102
  end
99
103
 
100
- attr_reader :title, :body, :path, :category, :created, :updated
104
+ attr_reader :uid, :title, :body, :category, :created, :updated
101
105
  attr_accessor :published
102
106
 
103
- def initialize(title:, body:, path:, category:, created:, updated:, published:)
107
+ def initialize(uid:, title:, body:, category:, created:, updated:, published:)
108
+ @uid = uid
104
109
  @title = title
105
110
  @body = body
106
- @path = path
107
111
  @category = category
108
112
  @created = created
109
113
  @updated = updated
@@ -133,16 +137,21 @@ module Carraway
133
137
  self.class.client.delete_item(
134
138
  table_name: Config.backend['table_name'],
135
139
  key: {
136
- path: @path
140
+ uid: @uid
137
141
  }
138
142
  )
139
143
  end
140
144
 
145
+ def path
146
+ @category.fullpath(@uid)
147
+ end
148
+
141
149
  def to_h
142
150
  {
151
+ uid: @uid,
143
152
  title: @title,
144
153
  body: @body,
145
- path: @path,
154
+ path: path,
146
155
  category: @category.key,
147
156
  created: @created.to_i,
148
157
  updated: @updated.to_i,
@@ -29,14 +29,14 @@ module Carraway
29
29
  erb :new
30
30
  end
31
31
 
32
- get %r{/carraway/edit([\w\./]+)} do |path|
33
- @post = Post.find(path)
32
+ get %r{/carraway/edit/(\d+)} do |uid|
33
+ @post = Post.find(uid)
34
34
  # FIXME handle not found
35
35
  erb :edit
36
36
  end
37
37
 
38
- get %r{/carraway/preview([\w\./]+)} do |path|
39
- @post = Post.find(path)
38
+ get %r{/carraway/preview/(\d+)} do |uid|
39
+ @post = Post.find(uid)
40
40
  # FIXME handle not found
41
41
 
42
42
  # Refresh GatsbyJS
@@ -52,16 +52,15 @@ module Carraway
52
52
  post '/carraway/' do
53
53
  @post = Post.create(
54
54
  title: params[:title],
55
- path: params[:path],
56
55
  body: params[:body],
57
56
  category_key: params[:category]
58
57
  )
59
58
  flash[:message] = 'Created'
60
- redirect "/carraway/edit#{@post.path}"
59
+ redirect "/carraway/edit/#{@post.uid}"
61
60
  end
62
61
 
63
62
  patch '/carraway/update' do
64
- @post = Post.find(params[:path])
63
+ @post = Post.find(params[:uid])
65
64
  # FIXME handle not found
66
65
  @post.assign(
67
66
  title: params[:title],
@@ -70,11 +69,11 @@ module Carraway
70
69
  # FIXME validation
71
70
  @post.save
72
71
  flash[:message] = 'Updated'
73
- redirect "/carraway/edit#{@post.path}"
72
+ redirect "/carraway/edit/#{@post.uid}"
74
73
  end
75
74
 
76
75
  patch '/carraway/publish' do
77
- @post = Post.find(params[:path])
76
+ @post = Post.find(params[:uid])
78
77
  # FIXME handle not found
79
78
  published =
80
79
  if params[:published] && params[:published].size > 0
@@ -87,24 +86,24 @@ module Carraway
87
86
  # FIXME validation
88
87
  @post.save
89
88
  flash[:message] = 'Published'
90
- redirect "/carraway/edit#{@post.path}"
89
+ redirect "/carraway/edit/#{@post.uid}"
91
90
  end
92
91
 
93
92
  patch '/carraway/unpublish' do
94
- @post = Post.find(params[:path])
93
+ @post = Post.find(params[:uid])
95
94
  # FIXME handle not found
96
95
  @post.published = nil
97
96
  # FIXME validation
98
97
  @post.save
99
98
  flash[:message] = 'Unpublished'
100
- redirect "/carraway/edit#{@post.path}"
99
+ redirect "/carraway/edit/#{@post.uid}"
101
100
  end
102
101
 
103
102
  delete '/carraway/destroy' do
104
- @post = Post.find(params[:path]) # FIXME handle not found
103
+ @post = Post.find(params[:uid]) # FIXME handle not found
105
104
  @post.destroy
106
- flash[:message] = "Deleted #{@post.path}"
107
- redirect "/carraway"
105
+ flash[:message] = "Deleted #{@post.uid}"
106
+ redirect "/carraway/"
108
107
  end
109
108
  end
110
109
  end
@@ -1,3 +1,3 @@
1
1
  module Carraway
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
@@ -14,7 +14,7 @@
14
14
  <td><%= @post.category.title %></td>
15
15
  <td>
16
16
  <%= @post.path %>
17
- <input type="hidden" name="path" value="<%= @post.path %>">
17
+ <input type="hidden" name="uid" value="<%= @post.uid %>">
18
18
  </td>
19
19
  </tr>
20
20
  </tbody>
@@ -32,11 +32,11 @@
32
32
  <button type="submit" class="waves-effect waves-light btn">保存</button>
33
33
  </div>
34
34
  </form>
35
- <a class="waves-effect waves-light btn blue" href="<%= "/carraway/preview#{@post.path}" %>" target="_blank">プレビュー</a>
35
+ <a class="waves-effect waves-light btn blue" href="<%= "/carraway/preview/#{@post.uid}" %>" target="_blank">プレビュー</a>
36
36
  <% if @post.published %>
37
37
  <form action="/carraway/unpublish" method="POST" class="col s12">
38
38
  <input type="hidden" name="_method" value="PATCH">
39
- <input type="hidden" name="path" value="<%= @post.path %>">
39
+ <input type="hidden" name="uid" value="<%= @post.uid %>">
40
40
  <div class="col s6">
41
41
  <button type="submit" class="waves-effect waves-light btn orange">非公開</button>
42
42
  </div>
@@ -44,7 +44,7 @@
44
44
  <% else %>
45
45
  <form action="/carraway/publish" method="POST" class="col s12">
46
46
  <input type="hidden" name="_method" value="PATCH">
47
- <input type="hidden" name="path" value="<%= @post.path %>">
47
+ <input type="hidden" name="uid" value="<%= @post.uid %>">
48
48
  <div class="input-field col s12">
49
49
  <input type="text" id="published" name="published" value="<%= @post.published_at %>" placeholder="2018-09-01 12:00:00">
50
50
  <label for="published">公開日</label>
@@ -56,7 +56,7 @@
56
56
  <% end %>
57
57
  <form action="/carraway/destroy" method="POST" class="col s12">
58
58
  <input type="hidden" name="_method" value="DELETE">
59
- <input type="hidden" name="path" value="<%= @post.path %>">
59
+ <input type="hidden" name="uid" value="<%= @post.uid %>">
60
60
  <div class="col s6">
61
61
  <button type="submit" class="waves-effect waves-light btn red">削除</button>
62
62
  </div>
@@ -8,10 +8,6 @@
8
8
  <option value="<%= category.key %>"><%= category.title %></option>
9
9
  <% end %>
10
10
  </select>
11
- <div class="input-field col s12">
12
- <input type="text" id="path" name="path" placeholder="post_url_path">
13
- <label for="path">Path</label>
14
- </div>
15
11
  <div class="input-field col s12">
16
12
  <input type="text" id="title" name="title" placeholder="記事タイトル">
17
13
  <label for="title">記事タイトル</label>
@@ -12,7 +12,7 @@
12
12
  <tbody>
13
13
  <% Array(@category_posts[category.key]).each do |post| %>
14
14
  <tr>
15
- <td><a href="/carraway/edit<%= post.path %>"><%= post.title %></a></td>
15
+ <td><a href="/carraway/edit/<%= post.uid %>"><%= post.title %></a></td>
16
16
  <td><%= post.created_at %></td>
17
17
  <td><%= post.updated_at %></td>
18
18
  <td><%= post.published_at %></td>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carraway
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - adorechic