mirror of
https://github.com/getml/sqlgen.git
synced 2026-01-01 15:09:46 -06:00
2.0 KiB
2.0 KiB
sqlgen::Varchar
The sqlgen::Varchar class provides a type-safe way to handle SQL VARCHAR fields in C++. It enforces length checks at runtime.
Usage
Basic Construction
Create a VARCHAR field with a specific maximum length:
// Create a VARCHAR(50) field
sqlgen::Varchar<50> name;
// Initialize with a string
sqlgen::Varchar<50> name("John Doe");
// Initialize with a std::string
std::string str = "Jane Doe";
sqlgen::Varchar<50> name(str);
Safe Construction with Result
Use the make function for safe construction with error handling:
// Safe construction with error handling
auto result = sqlgen::Varchar<50>::make("John Doe");
if (result) {
auto name = result.value();
// Use name...
} else {
// Handle error...
}
Assignment and Conversion
Assign values and convert between different VARCHAR sizes:
struct Person{
sqlgen::Varchar<50> name;
};
person.name = "John Doe"; // Direct assignment
person.name = std::string("Jane Doe"); // From std::string
// Convert between different sizes
sqlgen::Varchar<100> long_name;
sqlgen::Varchar<50> short_name = long_name; // Will check size at runtime
Accessing Values
Access the underlying string value:
struct Person{
sqlgen::Varchar<50> name;
};
const auto person = Person{.name = "John Doe"};
// Get the value
const std::string& value1 = person.name();
const std::string& value2 = person.name.get();
const std::string& value3 = person.name.value();
// Get the maximum size
constexpr size_t max_size = name.size();
Notes
- The template parameter
_sizespecifies the maximum length of the VARCHAR field - All string operations are checked against the maximum length
- The class provides both compile-time and runtime safety
- The
Resulttype is used for safe construction and error handling - The class supports:
- Direct string assignment
- Conversion between different VARCHAR sizes
- Reflection for SQL operations
- Move and copy semantics