2024-06-24 18:21:59 -04:00
using System.Text.Json ;
using HermesSocketLibrary.db ;
using HermesSocketLibrary.Requests ;
using ILogger = Serilog . ILogger ;
namespace HermesSocketServer.Requests
{
public class UpdateTTSVoiceState : IRequest
{
public string Name = > "update_tts_voice_state" ;
private Database _database ;
private ILogger _logger ;
public UpdateTTSVoiceState ( Database database , ILogger logger )
{
_database = database ;
_logger = logger ;
}
2024-08-10 15:36:32 -04:00
public async Task < RequestResult > Grant ( string sender , IDictionary < string , object > ? data )
2024-06-24 18:21:59 -04:00
{
2024-08-10 15:36:32 -04:00
if ( data = = null )
{
_logger . Warning ( "Data received from request is null. Ignoring it." ) ;
return new RequestResult ( false , null ) ;
}
2024-06-24 18:21:59 -04:00
if ( data [ "voice" ] is JsonElement voice )
data [ "voice" ] = voice . ToString ( ) ;
if ( data [ "state" ] is JsonElement state )
data [ "state" ] = state . ToString ( ) = = "True" ;
data [ "user" ] = sender ;
string sql = "INSERT INTO \"TtsVoiceState\" (\"userId\", \"ttsVoiceId\", state) VALUES (@user, @voice, @state) ON CONFLICT (\"userId\", \"ttsVoiceId\") DO UPDATE SET state = @state" ;
var result = await _database . Execute ( sql , data ) ;
2024-08-10 15:36:32 -04:00
_logger . Information ( $"Updated voice's [voice id: {data[" voice "]}] state [new state: {data[" state "]}][channel: {data[" user "]}]" ) ;
2024-06-24 18:21:59 -04:00
return new RequestResult ( result = = 1 , null ) ;
}
}
}