ultimatepp/uppsrc/Skylark/Sql.cpp
cxl 8e070bb698 uppsrc: Skylark moved from sandbox
git-svn-id: svn://ultimatepp.org/upp/trunk@5125 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2012-07-05 17:57:50 +00:00

56 lines
1.1 KiB
C++

#include "Skylark.h"
struct sFieldsToRenderer : public FieldOperator {
Renderer& http;
void Field(const char *name, Ref f) {
http(name, f);
}
sFieldsToRenderer(Renderer& http) : http(http) {}
};
Renderer& Renderer::operator()(Fields rec)
{
sFieldsToRenderer x(*this);
rec(x);
return *this;
}
Renderer& Renderer::operator()(const Sql& sql)
{
int n = sql.GetColumns();
for(int i = 0; i < n; i++)
(*this)(sql.GetColumnInfo(i).name, sql[i]);
return *this;
}
SqlUpdate Renderer::Update(SqlId table)
{
Vector<String> col = GetSchColumns(~table);
SqlUpdate u(table);
for(int i = 0; i < col.GetCount(); i++) {
String c = col[i];
int q = var.Find(c);
if(q < 0)
q = var.Find(ToLower(c));
if(q >= 0)
u(c, var[q]);
}
return u;
}
SqlInsert Renderer::Insert(SqlId table)
{
Vector<String> col = GetSchColumns(~table);
SqlInsert y(table);
for(int i = 0; i < col.GetCount(); i++) {
String c = col[i];
int q = var.Find(c);
if(q < 0)
q = var.Find(ToLower(c));
if(q >= 0)
y(c, var[q]);
}
return y;
}