Skip to content

Commit f56bf9b

Browse files
authored
fix: ulid generator is generating invalid value: 0001KPJAMH0000000000000000 (#1822)
Signed-off-by: James <[email protected]>
1 parent 3414f18 commit f56bf9b

File tree

4 files changed

+26
-12
lines changed

4 files changed

+26
-12
lines changed

engine/services/file_service.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include "file_service.h"
22
#include <cstdint>
3-
#include "utils/ulid/ulid.hh"
3+
#include "utils/ulid_generator.h"
44

55
cpp::result<OpenAi::File, std::string> FileService::UploadFile(
66
const std::string& filename, const std::string& purpose,
@@ -11,7 +11,7 @@ cpp::result<OpenAi::File, std::string> FileService::UploadFile(
1111
std::chrono::system_clock::now().time_since_epoch())
1212
.count();
1313

14-
auto file_id{"file-" + ulid::Marshal(ulid::CreateNowRand())};
14+
auto file_id{"file-" + ulid::GenerateUlid()};
1515
OpenAi::File file;
1616
file.id = file_id;
1717
file.object = "file";

engine/services/message_service.cc

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include "services/message_service.h"
22
#include "utils/logging_utils.h"
33
#include "utils/result.hpp"
4-
#include "utils/ulid/ulid.hh"
4+
#include "utils/ulid_generator.h"
55

66
cpp::result<OpenAi::Message, std::string> MessageService::CreateMessage(
77
const std::string& thread_id, const OpenAi::Role& role,
@@ -27,11 +27,8 @@ cpp::result<OpenAi::Message, std::string> MessageService::CreateMessage(
2727
std::get<std::vector<std::unique_ptr<OpenAi::Content>>>(content));
2828
}
2929

30-
auto ulid = ulid::CreateNowRand();
31-
auto msg_id = ulid::Marshal(ulid);
32-
3330
OpenAi::Message msg;
34-
msg.id = msg_id;
31+
msg.id = ulid::GenerateUlid();
3532
msg.object = "thread.message";
3633
msg.created_at = seconds_since_epoch;
3734
msg.thread_id = thread_id;

engine/services/thread_service.cc

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "thread_service.h"
2+
#include <chrono>
23
#include "utils/logging_utils.h"
3-
#include "utils/ulid/ulid.hh"
4+
#include "utils/ulid_generator.h"
45

56
cpp::result<OpenAi::Thread, std::string> ThreadService::CreateThread(
67
std::unique_ptr<OpenAi::ThreadToolResources> tool_resources,
@@ -12,11 +13,8 @@ cpp::result<OpenAi::Thread, std::string> ThreadService::CreateThread(
1213
std::chrono::system_clock::now().time_since_epoch())
1314
.count();
1415

15-
auto ulid = ulid::CreateNowRand();
16-
auto thread_id = ulid::Marshal(ulid);
17-
1816
OpenAi::Thread thread;
19-
thread.id = thread_id;
17+
thread.id = ulid::GenerateUlid();
2018
thread.object = "thread";
2119
thread.created_at = seconds_since_epoch;
2220

engine/utils/ulid_generator.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#pragma once
2+
3+
#include <string>
4+
#include "utils/ulid/ulid.hh"
5+
6+
namespace ulid {
7+
inline std::string GenerateUlid() {
8+
auto millisecs = std::chrono::duration_cast<std::chrono::milliseconds>(
9+
std::chrono::system_clock::now().time_since_epoch())
10+
.count();
11+
12+
std::random_device rd;
13+
std::mt19937_64 gen(rd());
14+
std::uniform_int_distribution<unsigned int> dis(0, 255);
15+
auto ulid = ulid::Create(
16+
millisecs, [&dis, &gen]() { return static_cast<uint8_t>(dis(gen)); });
17+
return ulid::Marshal(ulid);
18+
}
19+
} // namespace ulid

0 commit comments

Comments
 (0)