feyris-tan ef86554f9a Import
2025-05-12 22:09:16 +02:00

68 lines
3.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Npgsql;
using NpgsqlTypes;
using skyscraper5.DsmCc.Descriptors;
namespace skyscraper5.Data.PostgreSql
{
public partial class PostgresqlDataStore
{
public void StoreDsmCcDoItNowEvent(DateTime value, int currentNetworkId, int currentTransportStreamId, int programNumber, StreamEventDescriptor descriptorListStreamEventDescriptor, int pid)
{
EnqueueTask(x => WriteDsmCcDoItNowEvent(x, value, currentNetworkId, currentTransportStreamId, programNumber, descriptorListStreamEventDescriptor, pid));
}
private void WriteDsmCcDoItNowEvent(NpgsqlConnection conn, DateTime value, int currentNetworkId, int currentTransportStreamId, int programNumber, StreamEventDescriptor descriptorListStreamEventDescriptor, int pid)
{
if (TestForDoItNowEvent(conn, value, currentNetworkId, currentTransportStreamId, programNumber, descriptorListStreamEventDescriptor, pid))
return;
NpgsqlCommand command = conn.CreateCommand();
command.CommandText =
"insert into dsmcc_do_it_now_events (cnid, ctsid, program_number, pid, utc, event_id, private_data, npt_event_microsecond, npt_event_seconds)" +
"values (@cnid, @ctsid, @program_number, @pid, @utc, @event_id, @private_data, @npt_event_microsecond, @npt_event_seconds);";
command.Parameters.AddWithValue("@cnid", NpgsqlDbType.Integer, currentNetworkId);
command.Parameters.AddWithValue("@ctsid", NpgsqlDbType.Integer, currentTransportStreamId);
command.Parameters.AddWithValue("@program_number", NpgsqlDbType.Integer, programNumber);
command.Parameters.AddWithValue("@pid", NpgsqlDbType.Integer, pid);
command.Parameters.AddWithValue("@utc", NpgsqlDbType.Timestamp, value);
command.Parameters.AddWithValue("@event_id", NpgsqlDbType.Integer, (int)descriptorListStreamEventDescriptor.EventId);
command.Parameters.AddWithValue("@private_data", NpgsqlDbType.Bytea, descriptorListStreamEventDescriptor.PrivateData);
command.Parameters.AddWithValue("@npt_event_microsecond", NpgsqlDbType.Bigint, (long)descriptorListStreamEventDescriptor.NptEventMicroseconds);
command.Parameters.AddWithValue("@npt_event_seconds", NpgsqlDbType.Bigint, (long)descriptorListStreamEventDescriptor.NptEventSeconds);
command.ExecuteNonQuery();
}
private bool TestForDoItNowEvent(NpgsqlConnection conn, DateTime value, int currentNetworkId,
int currentTransportStreamId, int programNumber, StreamEventDescriptor descriptorListStreamEventDescriptor,
int pid)
{
NpgsqlCommand command = conn.CreateCommand();
command.CommandText =
"SELECT dateadded " +
"FROM dsmcc_do_it_now_events " +
"WHERE cnid = @cnid " +
"AND ctsid = @ctsid " +
"AND program_number = @program_number " +
"AND pid = @pid " +
"AND utc = @utc " +
"AND event_id = @event_id";
command.Parameters.AddWithValue("@cnid", NpgsqlDbType.Integer, currentNetworkId);
command.Parameters.AddWithValue("@ctsid", NpgsqlDbType.Integer, currentTransportStreamId);
command.Parameters.AddWithValue("@program_number", NpgsqlDbType.Integer, programNumber);
command.Parameters.AddWithValue("@pid", NpgsqlDbType.Integer, pid);
command.Parameters.AddWithValue("@utc", NpgsqlDbType.Timestamp, value);
command.Parameters.AddWithValue("@event_id", NpgsqlDbType.Integer, (int)descriptorListStreamEventDescriptor.EventId);
NpgsqlDataReader dataReader = command.ExecuteReader();
bool result = dataReader.Read();
dataReader.Close();
command.Dispose();
return result;
}
}
}