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,
|
char *modbColumnName(modb_ref *modb,
|
||||||
const char *table, size_t table_len,
|
const char *table, size_t table_len,
|
||||||
const char *column, size_t column_len)
|
const char *column, size_t column_len)
|
||||||
|
|||||||
@@ -22,6 +22,15 @@
|
|||||||
char *modbTableName(modb_ref *modb, const char *suffix, size_t suffix_len);
|
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);
|
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,
|
char *modbColumnName(modb_ref *modb,
|
||||||
const char *table, size_t table_len,
|
const char *table, size_t table_len,
|
||||||
const char *column, size_t column_len);
|
const char *column, size_t column_len);
|
||||||
|
|||||||
Reference in New Issue
Block a user