Skip to content

Commit 50391f2

Browse files
authored
Copy TS3Uploader to shared module (#11312)
1 parent 2b5d482 commit 50391f2

File tree

5 files changed

+936
-0
lines changed

5 files changed

+936
-0
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#include "backup_restore_traits.h"
2+
3+
#include <ydb/core/protos/flat_scheme_op.pb.h>
4+
#include <ydb/library/yverify_stream/yverify_stream.h>
5+
6+
#include <util/generic/hash.h>
7+
#include <util/string/cast.h>
8+
9+
namespace NKikimr {
10+
namespace NDataShard {
11+
namespace NBackupRestoreTraits {
12+
13+
bool TryCodecFromTask(const NKikimrSchemeOp::TBackupTask& task, ECompressionCodec& codec) {
14+
if (!task.HasCompression()) {
15+
codec = ECompressionCodec::None;
16+
return true;
17+
}
18+
19+
if (!TryFromString<ECompressionCodec>(task.GetCompression().GetCodec(), codec)) {
20+
return false;
21+
}
22+
23+
if (codec == ECompressionCodec::Invalid) {
24+
return false;
25+
}
26+
27+
return true;
28+
}
29+
30+
ECompressionCodec CodecFromTask(const NKikimrSchemeOp::TBackupTask& task) {
31+
ECompressionCodec codec;
32+
Y_ABORT_UNLESS(TryCodecFromTask(task, codec));
33+
return codec;
34+
}
35+
36+
EDataFormat NextDataFormat(EDataFormat cur) {
37+
switch (cur) {
38+
case EDataFormat::Csv:
39+
return EDataFormat::Invalid;
40+
case EDataFormat::Invalid:
41+
return EDataFormat::Invalid;
42+
}
43+
}
44+
45+
ECompressionCodec NextCompressionCodec(ECompressionCodec cur) {
46+
switch (cur) {
47+
case ECompressionCodec::None:
48+
return ECompressionCodec::Zstd;
49+
case ECompressionCodec::Zstd:
50+
return ECompressionCodec::Invalid;
51+
case ECompressionCodec::Invalid:
52+
return ECompressionCodec::Invalid;
53+
}
54+
}
55+
56+
TString DataFileExtension(EDataFormat format, ECompressionCodec codec) {
57+
static THashMap<EDataFormat, TString> formats = {
58+
{EDataFormat::Csv, ".csv"},
59+
};
60+
61+
static THashMap<ECompressionCodec, TString> codecs = {
62+
{ECompressionCodec::None, ""},
63+
{ECompressionCodec::Zstd, ".zst"},
64+
};
65+
66+
auto fit = formats.find(format);
67+
Y_VERIFY_S(fit != formats.end(), "Unexpected format: " << format);
68+
69+
auto cit = codecs.find(codec);
70+
Y_VERIFY_S(cit != codecs.end(), "Unexpected codec: " << codec);
71+
72+
return Sprintf("%s%s", fit->second.c_str(), cit->second.c_str());
73+
}
74+
75+
} // NBackupRestoreTraits
76+
} // NDataShard
77+
} // NKikimr
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#pragma once
2+
3+
#include <util/generic/string.h>
4+
#include <util/string/printf.h>
5+
6+
namespace NKikimrSchemeOp {
7+
class TBackupTask;
8+
}
9+
10+
namespace NKikimr {
11+
namespace NDataShard {
12+
namespace NBackupRestoreTraits {
13+
14+
enum class EDataFormat: int {
15+
Invalid /* "invalid" */,
16+
Csv /* "csv" */,
17+
};
18+
19+
enum class ECompressionCodec: int {
20+
Invalid /* "invalid" */,
21+
None /* "none" */,
22+
Zstd /* "zstd" */,
23+
};
24+
25+
bool TryCodecFromTask(const NKikimrSchemeOp::TBackupTask& task, ECompressionCodec& codec);
26+
ECompressionCodec CodecFromTask(const NKikimrSchemeOp::TBackupTask& task);
27+
28+
EDataFormat NextDataFormat(EDataFormat cur);
29+
ECompressionCodec NextCompressionCodec(ECompressionCodec cur);
30+
31+
TString DataFileExtension(EDataFormat format, ECompressionCodec codec);
32+
33+
inline TString SchemeKey(const TString& objKeyPattern) {
34+
return Sprintf("%s/scheme.pb", objKeyPattern.c_str());
35+
}
36+
37+
inline TString PermissionsKey(const TString& objKeyPattern) {
38+
return Sprintf("%s/permissions.pb", objKeyPattern.c_str());
39+
}
40+
41+
inline TString MetadataKey(const TString& objKeyPattern) {
42+
return Sprintf("%s/metadata.json", objKeyPattern.c_str());
43+
}
44+
45+
inline TString DataKey(const TString& objKeyPattern, ui32 n, EDataFormat format, ECompressionCodec codec) {
46+
const auto ext = DataFileExtension(format, codec);
47+
return Sprintf("%s/data_%02d%s", objKeyPattern.c_str(), n, ext.c_str());
48+
}
49+
50+
} // NBackupRestoreTraits
51+
} // NDataShard
52+
} // NKikimr

0 commit comments

Comments
 (0)