public AResult<Dictionary<string, object>> Create(string collectionName)
{
var request = new Request(HttpMethod.POST, ApiBaseUri.Index, "");
var bodyDocument = new Dictionary<string, object>();
// required
request.QueryString.Add(ParameterName.Collection, collectionName);
// required
bodyDocument.String(ParameterName.Type, _parameters.String(ParameterName.Type));
switch (_parameters.Enum<AIndexType>(ParameterName.Type))
{
case AIndexType.Fulltext:
Request.TrySetBodyParameter(ParameterName.Fields, _parameters, bodyDocument);
Request.TrySetBodyParameter(ParameterName.MinLength, _parameters, bodyDocument);
break;
case AIndexType.Geo:
Request.TrySetBodyParameter(ParameterName.Fields, _parameters, bodyDocument);
Request.TrySetBodyParameter(ParameterName.GeoJson, _parameters, bodyDocument);
break;
case AIndexType.Hash:
Request.TrySetBodyParameter(ParameterName.Fields, _parameters, bodyDocument);
Request.TrySetBodyParameter(ParameterName.Sparse, _parameters, bodyDocument);
Request.TrySetBodyParameter(ParameterName.Unique, _parameters, bodyDocument);
break;
case AIndexType.Skiplist:
Request.TrySetBodyParameter(ParameterName.Fields, _parameters, bodyDocument);
Request.TrySetBodyParameter(ParameterName.Sparse, _parameters, bodyDocument);
Request.TrySetBodyParameter(ParameterName.Unique, _parameters, bodyDocument);
break;
default:
break;
}
request.Body = JSON.ToJSON(bodyDocument, ASettings.JsonParameters);
var response = _connection.Send(request);
var result = new AResult<Dictionary<string, object>>(response);
switch (response.StatusCode)
{
case 200:
case 201:
var body = response.ParseBody<Dictionary<string, object>>();
result.Success = (body != null);
result.Value = body;
break;
case 400:
case 404:
default:
// Arango error
break;
}
_parameters.Clear();
return result;
}