litestream_rails 0.3.0 → 0.4.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 +4 -4
- data/app/controllers/litestream_rails/restorations_controller.rb +17 -0
- data/app/views/layouts/litestream_rails/_style.html +29 -0
- data/app/views/layouts/litestream_rails/application.html.erb +4 -4
- data/app/views/litestream_rails/processes/show.html.erb +1 -1
- data/config/routes.rb +1 -0
- data/lib/litestream_rails/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f7bd823a8640fa5b07a03af03d576eb4349e2b88c1c70cad211fc58bc927bc3
|
4
|
+
data.tar.gz: 1ddebc7f7a08d7f8a2097a1aaabbe862f88d147468065e3334d4c98af7963886
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10c34abb1f12c8a1e9ef75b748e4e6fcd3684ef0e3044e36847fe3c44bcc0c831c61ce4ac0cdc275f8afd12b16540b54177f12fd1610a603b9d3668d964411c9
|
7
|
+
data.tar.gz: 6302e48d4eda7c817152903bd3536f14cd322976615ed85c8b95e47f0d8034f5580e0fabc3601b290d29c51fcf82187fe18269214e396f1fd168f2efed1dab4e
|
@@ -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));
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<!DOCTYPE html>
|
2
2
|
<html class="h-full">
|
3
3
|
<head>
|
4
|
-
<title>Litestream
|
4
|
+
<title>Litestream</title>
|
5
5
|
<%= csrf_meta_tags %>
|
6
6
|
<%= csp_meta_tag %>
|
7
7
|
|
@@ -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>
|
@@ -45,7 +45,7 @@
|
|
45
45
|
element.classList.add('opacity-0')
|
46
46
|
element.remove()
|
47
47
|
},
|
48
|
-
|
48
|
+
5000
|
49
49
|
)
|
50
50
|
}
|
51
51
|
document.querySelectorAll('[data-controller="fade"]').forEach(element => {
|
@@ -52,7 +52,7 @@
|
|
52
52
|
<h2 class="text-lg font-bold">
|
53
53
|
<code><%= database['path'] %></code>
|
54
54
|
</h2>
|
55
|
-
|
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
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.
|
4
|
+
version: 0.4.1
|
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
|