// If record exists with this key, it is overwritten func (connection *Connection) Put(primary_key string, columns ColumnMap) (err os.Error) { fmt.Printf("storing %v => %v\n", primary_key, columns) cols := C.xtc_mapnew() defer C.xtc_mapdel(cols) for name, value := range columns { C.xtc_mapput(cols, C.CString(name), C.CString(value)) } if C.xtcrdb_tblput(connection.Tyrant, C.CString(primary_key), cols) == 0 { return os.NewError(connection.ErrorMessage()) } return nil }
// If record exists with this key, nothing happens func (connection *Connection) Create(primaryKey string, columns ColumnMap) (exists bool, err os.Error) { fmt.Printf("Create[%s]\n", primaryKey) cols := C.xtc_mapnew() defer C.xtc_mapdel(cols) for name, value := range columns { C.xtc_mapput(cols, C.CString(name), C.CString(value)) } if C.xtcrdb_tblputkeep(connection.Tyrant, C.CString(primaryKey), cols) == 0 { if connection.ErrorCode() != ErrCodeKeep() { return exists, os.NewError(connection.ErrorMessage()) } exists = true } return exists, nil }