Skip to content
115 changes: 115 additions & 0 deletions sources/Valkey.Glide/Abstract/IServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,121 @@ public interface IServer
/// </remarks>
Task<ValkeyValue> EchoAsync(ValkeyValue message, CommandFlags flags = CommandFlags.None);

/// <summary>
/// Get all configuration parameters matching the specified pattern.
/// </summary>
/// <param name="pattern">The pattern of config values to get.</param>
/// <param name="flags">The command flags to use. Currently flags are ignored.</param>
/// <returns>All matching configuration parameters.</returns>
/// <remarks><seealso href="https://valkey.io/commands/config-get"/></remarks>
KeyValuePair<string, string>[] ConfigGet(ValkeyValue pattern = default, CommandFlags flags = CommandFlags.None);

/// <inheritdoc cref="ConfigGet(ValkeyValue, CommandFlags)"/>
Task<KeyValuePair<string, string>[]> ConfigGetAsync(ValkeyValue pattern = default, CommandFlags flags = CommandFlags.None);

/// <summary>
/// Resets the statistics reported by Valkey using the INFO command.
/// </summary>
/// <param name="flags">The command flags to use. Currently flags are ignored.</param>
/// <remarks><seealso href="https://valkey.io/commands/config-resetstat"/></remarks>
void ConfigResetStatistics(CommandFlags flags = CommandFlags.None);

/// <inheritdoc cref="ConfigResetStatistics(CommandFlags)"/>
Task ConfigResetStatisticsAsync(CommandFlags flags = CommandFlags.None);

/// <summary>
/// The CONFIG REWRITE command rewrites the valkey.conf file the server was started with,
/// applying the minimal changes needed to make it reflecting the configuration currently
/// used by the server, that may be different compared to the original one because of the use of the CONFIG SET command.
/// </summary>
/// <param name="flags">The command flags to use. Currently flags are ignored.</param>
/// <remarks><seealso href="https://valkey.io/commands/config-rewrite"/></remarks>
void ConfigRewrite(CommandFlags flags = CommandFlags.None);

/// <inheritdoc cref="ConfigRewrite(CommandFlags)"/>
Task ConfigRewriteAsync(CommandFlags flags = CommandFlags.None);

/// <summary>
/// The CONFIG SET command is used in order to reconfigure the server at runtime without the need to restart Valkey.
/// You can change both trivial parameters or switch from one to another persistence option using this command.
/// </summary>
/// <param name="setting">The setting name.</param>
/// <param name="value">The new setting value.</param>
/// <param name="flags">The command flags to use. Currently flags are ignored.</param>
/// <remarks><seealso href="https://valkey.io/commands/config-set"/></remarks>
void ConfigSet(ValkeyValue setting, ValkeyValue value, CommandFlags flags = CommandFlags.None);

/// <inheritdoc cref="ConfigSet(ValkeyValue, ValkeyValue, CommandFlags)"/>
Task ConfigSetAsync(ValkeyValue setting, ValkeyValue value, CommandFlags flags = CommandFlags.None);

/// <summary>
/// Returns the number of keys in the currently-selected database.
/// </summary>
/// <param name="database">The database ID.</param>
/// <param name="flags">The command flags to use. Currently flags are ignored.</param>
/// <remarks><seealso href="https://valkey.io/commands/dbsize"/></remarks>
long DatabaseSize(int database = -1, CommandFlags flags = CommandFlags.None);

/// <inheritdoc cref="DatabaseSize(int, CommandFlags)"/>
Task<long> DatabaseSizeAsync(int database = -1, CommandFlags flags = CommandFlags.None);

/// <summary>
/// Delete all the keys of all databases on the server.
/// </summary>
/// <param name="flags">The command flags to use. Currently flags are ignored.</param>
/// <remarks><seealso href="https://valkey.io/commands/flushall"/></remarks>
void FlushAllDatabases(CommandFlags flags = CommandFlags.None);

/// <inheritdoc cref="FlushAllDatabases(CommandFlags)"/>
Task FlushAllDatabasesAsync(CommandFlags flags = CommandFlags.None);

/// <summary>
/// Delete all the keys of the database.
/// </summary>
/// <param name="database">The database ID.</param>
/// <param name="flags">The command flags to use. Currently flags are ignored.</param>
/// <remarks><seealso href="https://valkey.io/commands/flushdb"/></remarks>
void FlushDatabase(int database = -1, CommandFlags flags = CommandFlags.None);

/// <inheritdoc cref="FlushDatabase(int, CommandFlags)"/>
Task FlushDatabaseAsync(int database = -1, CommandFlags flags = CommandFlags.None);

/// <summary>
/// Return the time of the last DB save executed with success.
/// A client may check if a BGSAVE command succeeded reading the LASTSAVE value, then issuing a BGSAVE command
/// and checking at regular intervals every N seconds if LASTSAVE changed.
/// </summary>
/// <param name="flags">The command flags to use. Currently flags are ignored.</param>
/// <returns>The last time a save was performed.</returns>
/// <remarks><seealso href="https://valkey.io/commands/lastsave"/></remarks>
DateTime LastSave(CommandFlags flags = CommandFlags.None);

/// <inheritdoc cref="LastSave(CommandFlags)"/>
Task<DateTime> LastSaveAsync(CommandFlags flags = CommandFlags.None);

/// <summary>
/// The TIME command returns the current server time in UTC format.
/// Use the <see cref="DateTime.ToLocalTime"/> method to get local time.
/// </summary>
/// <param name="flags">The command flags to use. Currently flags are ignored.</param>
/// <returns>The server's current time.</returns>
/// <remarks><seealso href="https://valkey.io/commands/time"/></remarks>
DateTime Time(CommandFlags flags = CommandFlags.None);

/// <inheritdoc cref="Time(CommandFlags)"/>
Task<DateTime> TimeAsync(CommandFlags flags = CommandFlags.None);

/// <summary>
/// The LOLWUT command displays the Valkey version and a piece of generative computer art.
/// </summary>
/// <param name="flags">The command flags to use. Currently flags are ignored.</param>
/// <returns>A string containing the Valkey version and generative art.</returns>
/// <remarks><seealso href="https://valkey.io/commands/lolwut"/></remarks>
string Lolwut(CommandFlags flags = CommandFlags.None);

/// <inheritdoc cref="Lolwut(CommandFlags)"/>
Task<string> LolwutAsync(CommandFlags flags = CommandFlags.None);

/// <summary>
/// Gets the name of the current connection.
/// </summary>
Expand Down
90 changes: 90 additions & 0 deletions sources/Valkey.Glide/Abstract/ValkeyServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -101,4 +101,94 @@ public async Task<long> ClientIdAsync(CommandFlags flags = CommandFlags.None)
Utils.Requires<NotImplementedException>(flags == CommandFlags.None, "Command flags are not supported by GLIDE");
return await _conn.Command(Request.ClientId(), MakeRoute());
}

public KeyValuePair<string, string>[] ConfigGet(ValkeyValue pattern = default, CommandFlags flags = CommandFlags.None)
=> ConfigGetAsync(pattern, flags).GetAwaiter().GetResult();

public async Task<KeyValuePair<string, string>[]> ConfigGetAsync(ValkeyValue pattern = default, CommandFlags flags = CommandFlags.None)
{
Utils.Requires<NotImplementedException>(flags == CommandFlags.None, "Command flags are not supported by GLIDE");
return await _conn.Command(Request.ConfigGetAsync(pattern), MakeRoute());
}

public void ConfigResetStatistics(CommandFlags flags = CommandFlags.None)
=> ConfigResetStatisticsAsync(flags).GetAwaiter().GetResult();

public async Task ConfigResetStatisticsAsync(CommandFlags flags = CommandFlags.None)
{
Utils.Requires<NotImplementedException>(flags == CommandFlags.None, "Command flags are not supported by GLIDE");
_ = await _conn.Command(Request.ConfigResetStatisticsAsync(), MakeRoute());
}

public void ConfigRewrite(CommandFlags flags = CommandFlags.None)
=> ConfigRewriteAsync(flags).GetAwaiter().GetResult();

public async Task ConfigRewriteAsync(CommandFlags flags = CommandFlags.None)
{
Utils.Requires<NotImplementedException>(flags == CommandFlags.None, "Command flags are not supported by GLIDE");
_ = await _conn.Command(Request.ConfigRewriteAsync(), MakeRoute());
}

public void ConfigSet(ValkeyValue setting, ValkeyValue value, CommandFlags flags = CommandFlags.None)
=> ConfigSetAsync(setting, value, flags).GetAwaiter().GetResult();

public async Task ConfigSetAsync(ValkeyValue setting, ValkeyValue value, CommandFlags flags = CommandFlags.None)
{
Utils.Requires<NotImplementedException>(flags == CommandFlags.None, "Command flags are not supported by GLIDE");
_ = await _conn.Command(Request.ConfigSetAsync(setting, value), MakeRoute());
}

public long DatabaseSize(int database = -1, CommandFlags flags = CommandFlags.None)
=> DatabaseSizeAsync(database, flags).GetAwaiter().GetResult();

public async Task<long> DatabaseSizeAsync(int database = -1, CommandFlags flags = CommandFlags.None)
{
Utils.Requires<NotImplementedException>(flags == CommandFlags.None, "Command flags are not supported by GLIDE");
return await _conn.Command(Request.DatabaseSizeAsync(database), MakeRoute());
}

public void FlushAllDatabases(CommandFlags flags = CommandFlags.None)
=> FlushAllDatabasesAsync(flags).GetAwaiter().GetResult();

public async Task FlushAllDatabasesAsync(CommandFlags flags = CommandFlags.None)
{
Utils.Requires<NotImplementedException>(flags == CommandFlags.None, "Command flags are not supported by GLIDE");
_ = await _conn.Command(Request.FlushAllDatabasesAsync(), MakeRoute());
}

public void FlushDatabase(int database = -1, CommandFlags flags = CommandFlags.None)
=> FlushDatabaseAsync(database, flags).GetAwaiter().GetResult();

public async Task FlushDatabaseAsync(int database = -1, CommandFlags flags = CommandFlags.None)
{
Utils.Requires<NotImplementedException>(flags == CommandFlags.None, "Command flags are not supported by GLIDE");
_ = await _conn.Command(Request.FlushDatabaseAsync(database), MakeRoute());
}

public DateTime LastSave(CommandFlags flags = CommandFlags.None)
=> LastSaveAsync(flags).GetAwaiter().GetResult();

public async Task<DateTime> LastSaveAsync(CommandFlags flags = CommandFlags.None)
{
Utils.Requires<NotImplementedException>(flags == CommandFlags.None, "Command flags are not supported by GLIDE");
return await _conn.Command(Request.LastSaveAsync(), MakeRoute());
}

public DateTime Time(CommandFlags flags = CommandFlags.None)
=> TimeAsync(flags).GetAwaiter().GetResult();

public async Task<DateTime> TimeAsync(CommandFlags flags = CommandFlags.None)
{
Utils.Requires<NotImplementedException>(flags == CommandFlags.None, "Command flags are not supported by GLIDE");
return await _conn.Command(Request.TimeAsync(), MakeRoute());
}

public string Lolwut(CommandFlags flags = CommandFlags.None)
=> LolwutAsync(flags).GetAwaiter().GetResult();

public async Task<string> LolwutAsync(CommandFlags flags = CommandFlags.None)
{
Utils.Requires<NotImplementedException>(flags == CommandFlags.None, "Command flags are not supported by GLIDE");
return await _conn.Command(Request.LolwutAsync(), MakeRoute());
}
}
Loading
Loading