static NEOERR* aux_cmd_cmtadd(struct aux_entry *e, QueueEntry *q) { STRING str; string_init(&str); int type, oid; NEOERR *err; REQ_GET_PARAM_INT(q->hdfrcv, "type", type); REQ_GET_PARAM_INT(q->hdfrcv, "oid", oid); mdb_conn *db = e->db; struct cache *cd = e->cd; err = mdb_build_incol(q->hdfrcv, hdf_get_obj(g_cfg, CONFIG_PATH".InsertCol.comment"), &str); if (err != STATUS_OK) return nerr_pass(err); MDB_EXEC(db, NULL, "INSERT INTO comment %s", NULL, str.buf); string_clear(&str); cache_delf(cd, PREFIX_COMMENT"%d:%d_0", type, oid); return STATUS_OK; }
static NEOERR* aux_cmd_cmtadd(struct queue_entry *q, struct cache *cd, mdb_conn *db) { int type, oid, pid; char *ip, *addr, *author, *content; NEOERR *err; REQ_GET_PARAM_STR(q->hdfrcv, "ip", ip); REQ_GET_PARAM_STR(q->hdfrcv, "addr", addr); REQ_GET_PARAM_STR(q->hdfrcv, "author", author); REQ_GET_PARAM_STR(q->hdfrcv, "content", content); REQ_GET_PARAM_INT(q->hdfrcv, "type", type); REQ_GET_PARAM_INT(q->hdfrcv, "oid", oid); REQ_FETCH_PARAM_INT(q->hdfrcv, "pid", pid); MDB_EXEC(db, NULL, "INSERT INTO comment " " (type, oid, pid, ip, addr, author, content) " " VALUES ($1, $2, $3, $4::varchar(256), " " $5::varchar(256), $6::varchar(256), $7)", "iiissss", type, oid, pid, ip, addr, author, content); cache_delf(cd, PREFIX_CMTAPP"%d:%d_0", type, oid); return STATUS_OK; }
static NEOERR* city_cmd_id(struct city_entry *e, QueueEntry *q) { unsigned char *val = NULL; size_t vsize = 0; int id; NEOERR *err; mdb_conn *db = e->db; struct cache *cd = e->cd; REQ_GET_PARAM_INT(q->hdfrcv, "id", id); if (cache_getf(cd, &val, &vsize, PREFIX_CITY"%d", id)) { unpack_hdf(val, vsize, &q->hdfsnd); } else { MDB_QUERY_RAW(db, "city", _COL_CITY, "id=%d", NULL, id); err = mdb_set_rows(q->hdfsnd, db, _COL_CITY, "citys", NULL, MDB_FLAG_Z); if (err != STATUS_OK) return nerr_pass(err); /* * get city's parents */ int cnt = 0; char *pid = hdf_get_valuef(q->hdfsnd, "citys.0.pid"); while (pid && atoi(pid) > 0) { MDB_QUERY_RAW(db, "city", _COL_CITY, "id=%d", NULL, atoi(pid)); err = mdb_set_rows(q->hdfsnd, db, _COL_CITY, "citys", NULL, MDB_FLAG_Z); TRACE_NOK(err); pid = hdf_get_valuef(q->hdfsnd, "citys.%d.pid", ++cnt); } CACHE_HDF(q->hdfsnd, CITY_CC_SEC, PREFIX_CITY"%d", id); } return STATUS_OK; }
static NEOERR* aic_cmd_appuserup(struct queue_entry *q, struct cache *cd, mdb_conn *db) { STRING str; string_init(&str); int uid, aid; NEOERR *err; REQ_GET_PARAM_INT(q->hdfrcv, "uid", uid); REQ_GET_PARAM_INT(q->hdfrcv, "aid", aid); err = mcs_build_upcol(q->hdfrcv, hdf_get_obj(g_cfg, CONFIG_PATH".UpdateCol.userinfo"), &str); if (err != STATUS_OK) return nerr_pass(err); MDB_EXEC(db, NULL, "UPDATE userinfo SET %s WHERE uid=%d AND aid=%d;", NULL, str.buf, uid, aid); string_clear(&str); cache_delf(cd, PREFIX_USERLIST"%d", aid); return STATUS_OK; }
static NEOERR* aux_cmd_cmtdel(struct queue_entry *q, struct cache *cd, mdb_conn *db) { int id; NEOERR *err; REQ_GET_PARAM_INT(q->hdfrcv, "id", id); MDB_EXEC(db, NULL, "UPDATE comment SET state=%d WHERE id=%d;", NULL, CMT_ST_DEL, id); return STATUS_OK; }
static NEOERR* aux_cmd_cmtdel(struct aux_entry *e, QueueEntry *q) { int id; NEOERR *err; REQ_GET_PARAM_INT(q->hdfrcv, "id", id); mdb_conn *db = e->db; MDB_EXEC(db, NULL, "UPDATE comment SET statu=%d WHERE id=%d;", NULL, CMT_ST_DEL, id); return STATUS_OK; }
static NEOERR* aux_cmd_impdetail(struct queue_entry *q, struct cache *cd, mdb_conn *db) { unsigned char *val = NULL; size_t vsize = 0; NEOERR *err; int id; REQ_GET_PARAM_INT(q->hdfrcv, "id", id); if (cache_getf(cd, &val, &vsize, PREFIX_IMP_DETAIL"%d", id)) { unpack_hdf(val, vsize, &q->hdfsnd); } else { MDB_QUERY_RAW(db, "improve", IMP_COL, "id=%d", NULL, id); err = mdb_set_row(q->hdfsnd, db, IMP_COL, NULL); if (err != STATUS_OK) return nerr_pass(err); CACHE_HDF(q->hdfsnd, IMP_CC_SEC, PREFIX_IMP_DETAIL"%d", id); } return STATUS_OK; }
static NEOERR* aux_cmd_memorymod(struct aux_entry *e, QueueEntry *q) { STRING str; string_init(&str); int id; NEOERR *err; mdb_conn *db = e->db; struct cache *cd = e->cd; REQ_GET_PARAM_INT(q->hdfrcv, "id", id); err = mdb_build_upcol(q->hdfrcv, hdf_get_obj(g_cfg, CONFIG_PATH".UpdateCol.memory"), &str); if (err != STATUS_OK) return nerr_pass(err); MDB_EXEC(db, NULL, "UPDATE memory SET %s WHERE id=%d;", NULL, str.buf, id); string_clear(&str); cache_delf(cd, PREFIX_MEMORY"%d", id); return STATUS_OK; }
/* * input : aname(STR) asn(STR) masn(STR) email(STR) state(INT) * return: NORMAL REP_ERR_ALREADYREGIST * reply : NULL */ static NEOERR* aic_cmd_appnew(struct queue_entry *q, struct cache *cd, mdb_conn *db) { char *aname, *pname, *asn, *masn, *email; int aid, pid = 0, state; NEOERR *err; REQ_GET_PARAM_INT(q->hdfrcv, "state", state); REQ_GET_PARAM_STR(q->hdfrcv, "aname", aname); REQ_GET_PARAM_STR(q->hdfrcv, "asn", asn); REQ_GET_PARAM_STR(q->hdfrcv, "masn", masn); REQ_GET_PARAM_STR(q->hdfrcv, "email", email); REQ_FETCH_PARAM_STR(q->hdfrcv, "pname", pname); aid = hash_string(aname); if (pname) pid = hash_string(pname); err = aic_cmd_appinfo(q, cd, db); nerr_handle(&err, REP_ERR_NREGIST); if (err != STATUS_OK) return nerr_pass(err); if (hdf_get_obj(q->hdfsnd, "state")) return nerr_raise(REP_ERR_ALREADYREGIST, "%s already regist", aname); MDB_EXEC(db, NULL, "INSERT INTO appinfo (aid, aname, " " pid, asn, masn, email, state) " " VALUES ($1, $2::varchar(256), $3, $4::varchar(256), " " $5::varchar(256), $6::varchar(256), $7);", "isisssi", aid, aname, pid, asn, masn, email, state); cache_delf(cd, PREFIX_APPINFO"%d", aid); if (pid > 0) { cache_delf(cd, PREFIX_APPOUSER"%d_0", pid); } return STATUS_OK; }