Skip to content

Commit 0f98fd4

Browse files
committed
ref: Index methods
1 parent c4eab6f commit 0f98fd4

1 file changed

Lines changed: 13 additions & 10 deletions

File tree

src/NoSQLite/NoSQLiteTable.cs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -459,20 +459,23 @@ SELECT count(*) FROM sqlite_master
459459
}
460460

461461
/// <summary>
462-
/// Create an index on a json parameter using the <b> ->> </b> opperator.
462+
/// Create an index on a json parameter using the <b> json_extract(json, '$.param') </b> opperator.
463463
/// Parameter can include nested json values eg: assets.house.location
464464
/// </summary>
465465
/// <param name="indexName">The name of the index. If this name exists the index won't be created.</param>
466466
/// <param name="parameter">The json parameter to create the index for.</param>
467-
/// <remarks>Index on sqlite is always <see cref="Table"/>_<paramref name="indexName"/></remarks>
468-
public void CreateIndex(string indexName, string parameter)
467+
/// <remarks>
468+
/// Parameter names are case sensitive.<br/>
469+
/// Index name on sqlite will always be created as <see cref="Table"/>_<paramref name="indexName"/>
470+
/// </remarks>
471+
public bool CreateIndex(string indexName, string parameter)
469472
{
470473
string sql = $"""
471-
CREATE INDEX IF NOT EXISTS "{Table}_{indexName}"
472-
ON "{Table}"(json ->> '$.{parameter}');
474+
CREATE INDEX "{Table}_{indexName}"
475+
ON "{Table}"(json_extract("json", '$.{parameter}'));
473476
""";
474477

475-
sqlite3_exec(db, sql);
478+
return sqlite3_exec(db, sql) == SQLITE_OK;
476479
}
477480

478481
/// <summary>
@@ -481,7 +484,7 @@ CREATE INDEX IF NOT EXISTS "{Table}_{indexName}"
481484
/// <param name="indexName">The name of the index.</param>
482485
/// <param name="parameter">The json parameter to update the index for.</param>
483486
/// <remarks>Index on sqlite is always <see cref="Table"/>_<paramref name="indexName"/></remarks>
484-
public void UpdateIndex(string indexName, string parameter)
487+
public void RecreateIndex(string indexName, string parameter)
485488
{
486489
DeleteIndex(indexName);
487490
CreateIndex(indexName, parameter);
@@ -492,13 +495,13 @@ public void UpdateIndex(string indexName, string parameter)
492495
/// </summary>
493496
/// <param name="indexName">The name of the index.</param>
494497
/// <remarks>Index on sqlite is always <see cref="Table"/>_<paramref name="indexName"/></remarks>
495-
public void DeleteIndex(string indexName)
498+
public bool DeleteIndex(string indexName)
496499
{
497500
string sql = $"""
498-
DROP INDEX IF EXISTS "{Table}_{indexName}"
501+
DROP INDEX "{Table}_{indexName}"
499502
""";
500503

501-
sqlite3_exec(db, sql);
504+
return sqlite3_exec(db, sql) == SQLITE_OK;
502505
}
503506

504507
#endregion

0 commit comments

Comments
 (0)