icfs 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/data/icfs.css +7 -1
- data/data/icfs.js +17 -19
- data/devel/run/base.rb +2 -1
- data/devel/run/case-backup.rb +24 -0
- data/devel/run/case-restore.rb +24 -0
- data/devel/run/copy-s3.rb +2 -0
- data/devel/run/init-icfs.rb +7 -37
- data/devel/run/init-template.rb +33 -0
- data/lib/icfs/api.rb +92 -48
- data/lib/icfs/cache_elastic.rb +10 -2
- data/lib/icfs/config.rb +4 -3
- data/lib/icfs/items.rb +21 -5
- data/lib/icfs/utils/backup.rb +22 -18
- data/lib/icfs/utils/check.rb +24 -22
- data/lib/icfs/web/client.rb +302 -160
- data/lib/icfs.rb +70 -1
- metadata +5 -3
- data/bin/icfs_demo_fcgi.rb +0 -53
data/lib/icfs/items.rb
CHANGED
@@ -499,9 +499,10 @@ module Items
|
|
499
499
|
'template' => Validate::IsBoolean,
|
500
500
|
'status' => Validate::IsBoolean,
|
501
501
|
'title' => FieldTitle,
|
502
|
-
'access' => SubAccess
|
502
|
+
'access' => SubAccess,
|
503
503
|
}.freeze,
|
504
504
|
optional: {
|
505
|
+
'caseid' => FieldCaseid,
|
505
506
|
'tags' => SubTags,
|
506
507
|
'stats' => SubCaseStats,
|
507
508
|
}.freeze
|
@@ -512,11 +513,11 @@ module Items
|
|
512
513
|
ItemEntryNew = {
|
513
514
|
method: :hash,
|
514
515
|
required: {
|
515
|
-
'caseid' => FieldCaseid,
|
516
516
|
'title' => FieldTitle,
|
517
517
|
'content' => FieldContent,
|
518
518
|
}.freeze,
|
519
519
|
optional: {
|
520
|
+
'caseid' => FieldCaseid,
|
520
521
|
'time' => Validate::IsIntPos,
|
521
522
|
'tags' => SubTagsNormal,
|
522
523
|
'index' => SubIndexes,
|
@@ -536,11 +537,11 @@ module Items
|
|
536
537
|
ItemEntryEdit = {
|
537
538
|
method: :hash,
|
538
539
|
required: {
|
539
|
-
'caseid' => FieldCaseid,
|
540
540
|
'title' => FieldTitle,
|
541
541
|
'content' => FieldContent,
|
542
542
|
}.freeze,
|
543
543
|
optional: {
|
544
|
+
'caseid' => FieldCaseid,
|
544
545
|
'entry' => Validate::IsIntPos,
|
545
546
|
'time' => Validate::IsIntPos,
|
546
547
|
'tags' => SubTagsEntry,
|
@@ -567,6 +568,7 @@ module Items
|
|
567
568
|
'tasks' => SubTasksEdit
|
568
569
|
}.freeze,
|
569
570
|
optional: {
|
571
|
+
'caseid' => FieldCaseid,
|
570
572
|
'action' => Validate::IsIntPos
|
571
573
|
}.freeze
|
572
574
|
}.freeze
|
@@ -580,6 +582,7 @@ module Items
|
|
580
582
|
'content' => FieldContent,
|
581
583
|
}.freeze,
|
582
584
|
optional: {
|
585
|
+
'caseid' => FieldCaseid,
|
583
586
|
'index' => Validate::IsIntPos,
|
584
587
|
'tags' => SubTags,
|
585
588
|
}.freeze
|
@@ -605,6 +608,7 @@ module Items
|
|
605
608
|
}.freeze,
|
606
609
|
optional: {
|
607
610
|
'stats' => SubCaseStats,
|
611
|
+
'entry' => Validate::IsIntPos,
|
608
612
|
}.freeze,
|
609
613
|
}.freeze
|
610
614
|
|
@@ -619,12 +623,18 @@ module Items
|
|
619
623
|
'prev' => FieldHash,
|
620
624
|
'time' => Validate::IsIntPos,
|
621
625
|
'user' => FieldUsergrp,
|
622
|
-
'entry' => SubLogItem,
|
623
626
|
}.freeze,
|
624
627
|
optional: {
|
628
|
+
'entry' => SubLogItem,
|
625
629
|
'index' => SubLogItem,
|
626
630
|
'action' => SubLogItem,
|
627
|
-
'
|
631
|
+
'case' => {
|
632
|
+
method: :hash,
|
633
|
+
required: {
|
634
|
+
'set' => Validate::IsBoolean,
|
635
|
+
'hash' => FieldHash,
|
636
|
+
}.freeze,
|
637
|
+
}.freeze,
|
628
638
|
'files_hash' => {
|
629
639
|
method: :array,
|
630
640
|
min: 1,
|
@@ -677,6 +687,9 @@ module Items
|
|
677
687
|
'action' => Validate::IsIntPos,
|
678
688
|
'log' => Validate::IsIntPos,
|
679
689
|
'tasks' => SubTasks
|
690
|
+
}.freeze,
|
691
|
+
optional: {
|
692
|
+
'entry' => Validate::IsIntPos,
|
680
693
|
}.freeze
|
681
694
|
}.freeze
|
682
695
|
|
@@ -693,6 +706,9 @@ module Items
|
|
693
706
|
'content' => FieldContent,
|
694
707
|
'tags' => SubTags
|
695
708
|
}.freeze,
|
709
|
+
optional: {
|
710
|
+
'entry' => Validate::IsIntPos,
|
711
|
+
}.freeze
|
696
712
|
}.freeze
|
697
713
|
|
698
714
|
|
data/lib/icfs/utils/backup.rb
CHANGED
@@ -111,13 +111,15 @@ class Backup
|
|
111
111
|
end
|
112
112
|
|
113
113
|
# entry
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
114
|
+
if log['entry']
|
115
|
+
enum = log['entry']['num']
|
116
|
+
_copy_item(dest,
|
117
|
+
'entry %d-%d' % [enum, lnum],
|
118
|
+
:entry_read,
|
119
|
+
:entry_write,
|
120
|
+
[cid, enum, lnum]
|
121
|
+
)
|
122
|
+
end
|
121
123
|
|
122
124
|
# index
|
123
125
|
if log['index']
|
@@ -142,7 +144,7 @@ class Backup
|
|
142
144
|
end
|
143
145
|
|
144
146
|
# case
|
145
|
-
if log['
|
147
|
+
if log['case']
|
146
148
|
_copy_item(dest,
|
147
149
|
'case %d' % lnum,
|
148
150
|
:case_read,
|
@@ -280,15 +282,17 @@ class Backup
|
|
280
282
|
end
|
281
283
|
|
282
284
|
# entry
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
285
|
+
if log['entry']
|
286
|
+
enum = log['entry']['num']
|
287
|
+
_restore_item(src,
|
288
|
+
'entry %d-%d' % [enum, lnum],
|
289
|
+
:entry_read,
|
290
|
+
:entry_write,
|
291
|
+
[cid, enum, lnum],
|
292
|
+
[cid, enum]
|
293
|
+
)
|
294
|
+
emax = enum if enum > emax
|
295
|
+
end
|
292
296
|
|
293
297
|
# index
|
294
298
|
if log['index']
|
@@ -317,7 +321,7 @@ class Backup
|
|
317
321
|
end
|
318
322
|
|
319
323
|
# case
|
320
|
-
if log['
|
324
|
+
if log['case']
|
321
325
|
_restore_item(src,
|
322
326
|
'case %d' % lnum,
|
323
327
|
:case_read,
|
data/lib/icfs/utils/check.rb
CHANGED
@@ -138,27 +138,29 @@ class Check
|
|
138
138
|
end
|
139
139
|
|
140
140
|
# entry
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
[
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
141
|
+
if log['entry']
|
142
|
+
enum = log['entry']['num']
|
143
|
+
ent = _item(
|
144
|
+
'entry %d-%d' % [enum, lnum],
|
145
|
+
:entry_read,
|
146
|
+
[cid, enum, lnum],
|
147
|
+
ent_cur.include?(enum),
|
148
|
+
log['entry']['hash'],
|
149
|
+
Items::ItemEntry,
|
150
|
+
[
|
151
|
+
['caseid', 0].freeze,
|
152
|
+
['entry', 1].freeze,
|
153
|
+
['log', 2].freeze
|
154
|
+
].freeze,
|
155
|
+
)
|
155
156
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
157
|
+
# current entry
|
158
|
+
unless ent_cur.include?(enum)
|
159
|
+
ent_cur.add(enum)
|
160
|
+
if ent['files']
|
161
|
+
ent['files'].each do |fd|
|
162
|
+
file_cur.add( '%d-%d-%d' % [enum, fd['num'], fd['log']] )
|
163
|
+
end
|
162
164
|
end
|
163
165
|
end
|
164
166
|
end
|
@@ -202,13 +204,13 @@ class Check
|
|
202
204
|
end
|
203
205
|
|
204
206
|
# case
|
205
|
-
if log['
|
207
|
+
if log['case']
|
206
208
|
cse = _item(
|
207
209
|
'case %d' % lnum,
|
208
210
|
:case_read,
|
209
211
|
[cid, lnum],
|
210
212
|
cse_cur,
|
211
|
-
log['
|
213
|
+
log['case']['hash'],
|
212
214
|
Items::ItemCase,
|
213
215
|
[
|
214
216
|
['caseid', 0].freeze,
|