Added some convenience methods for building column names
This commit is contained in:
77
src/modb_p.c
77
src/modb_p.c
@@ -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, '`');
|
||||
}
|
||||
|
||||
16
src/modb_p.h
16
src/modb_p.h
@@ -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__
|
||||
|
||||
Reference in New Issue
Block a user