litestream_rails 0.3.0 → 0.4.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: 2e9c8bcec979cf18668f44388864b49c3111ed8be9025cc16e8dde054ef2281a
4
- data.tar.gz: b747117ff97159c50a17b87b1ad7bfdcbb2f1c0503195ff63e7c1c85ea66f9f0
3
+ metadata.gz: 07b007b5c9d51aa745ff55bee9692c8136b65ee58bd9ec7fe9268d1023a9f191
4
+ data.tar.gz: 6f87be36ebf727ae6ceba9da5568d213d1c147f358bac76d350875c442c64e8b
5
5
  SHA512:
6
- metadata.gz: ded52a5d85703cb8a3f573ccfdb98a267e2db042f82a66db25afcfe703d7dca08e1feb161bb6e1a08fbab2de6134a08f44964ff69f01e400f289a31c87714230
7
- data.tar.gz: 3a6e1933b8ce9cf878dc73564c923fe36ec5bb69ee17685f13700b7561532134efce2809b604027f22c3f945f611aea1cabbfb5e0c07b07104fe3ec68dcb12d1
6
+ metadata.gz: 5100418dc719c6e28cf1e8e8ca238487167859541035a176845897773320a3c46c1eddd3c2cfb4a4dc2daee6e7674cce68f1acd9f84a9b9eb460ad8110b356aa
7
+ data.tar.gz: c52838111d8e0bce68c9b94843c48147c58b1ab11bb16f3b11ffb898f5dbad439812c722c16f8b6abce937ad76ec655c9890d8150c6e14cc816ee495a161f184
@@ -0,0 +1,17 @@
1
+ module LitestreamRails
2
+ class RestorationsController < ApplicationController
3
+ # POST /restorations
4
+ def create
5
+ database = params[:database].remove("[ROOT]/")
6
+ dir, file = File.split(database)
7
+ ext = File.extname(file)
8
+ base = File.basename(file, ext)
9
+ now = Time.now.utc.strftime("%Y%m%d%H%M%S")
10
+ backup = File.join(dir, "#{base}-#{now}#{ext}")
11
+
12
+ Litestream::Commands.restore(database, async: false, **{"-o" => backup})
13
+
14
+ redirect_to root_path, notice: "Restored to <code>#{backup}</code>."
15
+ end
16
+ end
17
+ end
@@ -544,6 +544,9 @@
544
544
  .inline-flex {
545
545
  display: inline-flex;
546
546
  }
547
+ .inline-block {
548
+ display: inline-block;
549
+ }
547
550
  .table {
548
551
  display: table;
549
552
  }
@@ -621,12 +624,23 @@
621
624
  .rounded-md {
622
625
  border-radius: 0.375rem;
623
626
  }
627
+ .rounded-lg {
628
+ border-radius: 0.5rem;
629
+ }
624
630
  .border-b {
625
631
  border-bottom-width: 1px;
626
632
  }
627
633
  .border-t {
628
634
  border-top-width: 1px;
629
635
  }
636
+ .bg-green-50 {
637
+ --tw-bg-opacity: 1;
638
+ background-color: rgb(240 253 244 / var(--tw-bg-opacity));
639
+ }
640
+ .bg-red-50 {
641
+ --tw-bg-opacity: 1;
642
+ background-color: rgb(254 242 242 / var(--tw-bg-opacity));
643
+ }
630
644
  .bg-green-100 {
631
645
  --tw-bg-opacity: 1;
632
646
  background-color: rgb(220 252 231 / var(--tw-bg-opacity));
@@ -658,6 +672,10 @@
658
672
  padding-left: 0.625rem;
659
673
  padding-right: 0.625rem;
660
674
  }
675
+ .px-3 {
676
+ padding-left: 0.75rem;
677
+ padding-right: 0.75rem;
678
+ }
661
679
  .py-1 {
662
680
  padding-top: 0.25rem;
663
681
  padding-bottom: 0.25rem;
@@ -702,12 +720,23 @@
702
720
  font-size: 0.875rem;
703
721
  line-height: 1.25rem;
704
722
  }
723
+ .font-medium {
724
+ font-weight: 500;
725
+ }
705
726
  .font-bold {
706
727
  font-weight: 700;
707
728
  }
708
729
  .font-semibold {
709
730
  font-weight: 600;
710
731
  }
732
+ .text-green-500 {
733
+ --tw-text-opacity: 1;
734
+ color: rgb(34 197 94 / var(--tw-text-opacity));
735
+ }
736
+ .text-red-500 {
737
+ --tw-text-opacity: 1;
738
+ color: rgb(239 68 68 / var(--tw-text-opacity));
739
+ }
711
740
  .text-blue-500 {
712
741
  --tw-text-opacity: 1;
713
742
  color: rgb(59 130 246 / var(--tw-text-opacity));
@@ -24,7 +24,7 @@
24
24
  <p id="notice"
25
25
  class="py-2 px-3 bg-green-50 text-green-500 font-medium rounded-lg inline-block"
26
26
  data-controller="fade">
27
- <%= notice %>
27
+ <%= notice.html_safe %>
28
28
  </p>
29
29
  <% end %>
30
30
 
@@ -32,7 +32,7 @@
32
32
  <p id="alert"
33
33
  class="py-2 px-3 bg-red-50 text-red-500 font-medium rounded-lg inline-block"
34
34
  data-controller="fade">
35
- <%= alert %>
35
+ <%= alert.html_safe %>
36
36
  </p>
37
37
  <% end %>
38
38
  </div>
@@ -52,7 +52,7 @@
52
52
  <h2 class="text-lg font-bold">
53
53
  <code><%= database['path'] %></code>
54
54
  </h2>
55
- <button type="button" class="rounded-md bg-slate-800 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-slate-700">Restore</button>
55
+ <%= button_to "Restore", restorations_path, class: "rounded-md bg-slate-800 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-slate-700", params: { database: database['path'] } %>
56
56
  </div>
57
57
 
58
58
  <br />
data/config/routes.rb CHANGED
@@ -2,4 +2,5 @@ LitestreamRails::Engine.routes.draw do
2
2
  get "/" => "processes#show", :as => :root
3
3
 
4
4
  resource :process, only: [:show], path: ""
5
+ resources :restorations, only: [:create]
5
6
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LitestreamRails
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: litestream_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen Margheim
@@ -91,6 +91,7 @@ files:
91
91
  - Rakefile
92
92
  - app/controllers/litestream_rails/application_controller.rb
93
93
  - app/controllers/litestream_rails/processes_controller.rb
94
+ - app/controllers/litestream_rails/restorations_controller.rb
94
95
  - app/views/layouts/litestream_rails/_style.html
95
96
  - app/views/layouts/litestream_rails/application.html.erb
96
97
  - app/views/litestream_rails/processes/show.html.erb