Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
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;
}
Ejemplo n.º 5
0
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;
}
Ejemplo n.º 6
0
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;
}
Ejemplo n.º 7
0
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;
}
Ejemplo n.º 8
0
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;
}
Ejemplo n.º 9
0
/*
 * 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;
}