carraway 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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