Added some convenience methods for building column names

This commit is contained in:
2020-10-06 11:22:05 +01:00
parent f64b9474cb
commit 44ad06a819
2 changed files with 93 additions and 0 deletions

View File

@@ -25,3 +25,80 @@ void modbTableName_sb(str_builder *sb, struct modb_t *modb, const char *suffix,
strbld_str(sb, modb->name, modb->name_len);
strbld_str(sb, suffix, suffix_len);
}
char *modbColumnName(struct modb_t *modb,
const char *table, size_t table_len,
const char *column, size_t column_len)
{
str_builder *sb;
char *str;
size_t len;
if ((sb = strbld_create()) == 0) {
return 0;
}
modbColumnName_sb(sb, modb, table, table_len, column, column_len);
if (strbld_finalize_or_destroy(&sb, &str, &len) != 0) {
return 0;
}
return str;
}
void modbColumnName_sb(str_builder *sb, struct modb_t *modb,
const char *table, size_t table_len,
const char *column, size_t column_len)
{
if (table != 0) {
strbld_char(sb, '`');
modbTableName_sb(sb, modb, table, table_len);
strbld_char(sb, '`');
strbld_char(sb, '.');
}
strbld_char(sb, '`');
strbld_str(sb, column, column_len);
strbld_char(sb, '`');
}
char *modbColumnNameAs(struct modb_t *modb,
const char *table, size_t table_len,
const char *column, size_t column_len,
const char *as_column, size_t as_column_len)
{
str_builder *sb;
char *str;
size_t len;
if ((sb = strbld_create()) == 0) {
return 0;
}
modbColumnNameAs_sb(sb, modb, table, table_len, column, column_len, as_column, as_column_len);
if (strbld_finalize_or_destroy(&sb, &str, &len) != 0) {
return 0;
}
return str;
}
void modbColumnNameAs_sb(str_builder *sb, struct modb_t *modb,
const char *table, size_t table_len,
const char *column, size_t column_len,
const char *as_column, size_t as_column_len)
{
if (table != 0) {
strbld_char(sb, '`');
modbTableName_sb(sb, modb, table, table_len);
strbld_char(sb, '`');
strbld_char(sb, '.');
}
strbld_char(sb, '`');
strbld_str(sb, column, column_len);
strbld_char(sb, '`');
strbld_str(sb, " AS ", 4);
strbld_char(sb, '`');
strbld_str(sb, as_column, as_column_len);
strbld_char(sb, '`');
}

View File

@@ -22,5 +22,21 @@
char *modbTableName(struct modb_t *modb, const char *suffix, size_t suffix_len);
void modbTableName_sb(str_builder *sb, struct modb_t *modb, const char *suffix, size_t suffix_len);
char *modbColumnName(struct modb_t *modb,
const char *table, size_t table_len,
const char *column, size_t column_len);
void modbColumnName_sb(str_builder *sb, struct modb_t *modb,
const char *table, size_t table_len,
const char *column, size_t column_len);
char *modbColumnNameAs(struct modb_t *modb,
const char *table, size_t table_len,
const char *column, size_t column_len,
const char *as_column, size_t as_column_len);
void modbColumnNameAs_sb(str_builder *sb, struct modb_t *modb,
const char *table, size_t table_len,
const char *column, size_t column_len,
const char *as_column, size_t as_column_len);
#endif // H__MODB_P__