Added a join helper
This commit is contained in:
39
src/modb_p.c
39
src/modb_p.c
@@ -27,6 +27,45 @@ void modbTableName_sb(str_builder *sb, modb_ref *modb, const char *suffix, size_
|
||||
}
|
||||
|
||||
|
||||
char *modbJoin(modb_ref *modb,
|
||||
const char *join, size_t join_len, int equals,
|
||||
const char *tableA, size_t tableA_len, const char *colA, size_t colA_len,
|
||||
const char *tableB, size_t tableB_len, const char *colB, size_t colB_len)
|
||||
{
|
||||
str_builder *sb;
|
||||
char *str;
|
||||
size_t len;
|
||||
|
||||
if ((sb = strbld_create()) == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
modbJoin_sb(sb, modb,
|
||||
join, join_len, equals,
|
||||
tableA, tableA_len, colA, colA_len,
|
||||
tableB, tableB_len, colB, colB_len);
|
||||
|
||||
if (strbld_finalize_or_destroy(&sb, &str, &len) != 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
void modbJoin_sb(str_builder *sb, modb_ref *modb,
|
||||
const char *join, size_t join_len, int equals,
|
||||
const char *tableA, size_t tableA_len, const char *colA, size_t colA_len,
|
||||
const char *tableB, size_t tableB_len, const char *colB, size_t colB_len)
|
||||
{
|
||||
strbld_str(sb, join, join_len);
|
||||
strbld_str(sb, " JOIN ", 6);
|
||||
modbTableName_sb(sb, modb, tableA, tableA_len);
|
||||
strbld_str(sb, " ON ", 4);
|
||||
modbColumnName_sb(sb, modb, tableA, tableA_len, colA, colA_len);
|
||||
strbld_str(sb, equals ? " = " : " != ", 4);
|
||||
modbColumnName_sb(sb, modb, tableB, tableB_len, colB, colB_len);
|
||||
}
|
||||
|
||||
|
||||
char *modbColumnName(modb_ref *modb,
|
||||
const char *table, size_t table_len,
|
||||
const char *column, size_t column_len)
|
||||
|
||||
@@ -22,6 +22,15 @@
|
||||
char *modbTableName(modb_ref *modb, const char *suffix, size_t suffix_len);
|
||||
void modbTableName_sb(str_builder *sb, modb_ref *modb, const char *suffix, size_t suffix_len);
|
||||
|
||||
char *modbJoin(modb_ref *modb,
|
||||
const char *join, size_t join_len, int equals,
|
||||
const char *tableA, size_t tableA_len, const char *colA, size_t colA_len,
|
||||
const char *tableB, size_t tableB_len, const char *colB, size_t colB_len);
|
||||
void modbJoin_sb(str_builder *sb, modb_ref *modb,
|
||||
const char *join, size_t join_len, int equals,
|
||||
const char *tableA, size_t tableA_len, const char *colA, size_t colA_len,
|
||||
const char *tableB, size_t tableB_len, const char *colB, size_t colB_len);
|
||||
|
||||
char *modbColumnName(modb_ref *modb,
|
||||
const char *table, size_t table_len,
|
||||
const char *column, size_t column_len);
|
||||
|
||||
Reference in New Issue
Block a user