2024-06-24 18:21:59 -04:00
using HermesSocketLibrary.db ;
using ILogger = Serilog . ILogger ;
namespace HermesSocketServer.Requests
{
public class UpdateTTSVoiceState : IRequest
{
public string Name = > "update_tts_voice_state" ;
2024-10-20 16:39:13 -04:00
public string [ ] RequiredKeys = > [ "voice" , "state" ] ;
2024-06-24 18:21:59 -04:00
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-10-20 16:39:13 -04:00
data [ "voice" ] = data [ "voice" ] . ToString ( ) ;
data [ "state" ] = data [ "state" ] . ToString ( ) = = "True" ;
2024-06-24 18:21:59 -04:00
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-10-20 16:39:13 -04:00
if ( result > 0 )
return RequestResult . Successful ( null ) ;
return RequestResult . Failed ( "Something went wrong when updating the database." ) ;
2024-06-24 18:21:59 -04:00
}
}
}