-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFileStatusRepository.cs
61 lines (53 loc) · 2.28 KB
/
FileStatusRepository.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using Altinn.Broker.Core.Domain;
using Altinn.Broker.Core.Domain.Enums;
using Altinn.Broker.Core.Repositories;
using Npgsql;
namespace Altinn.Broker.Persistence.Repositories;
public class FileStatusRepository : IFileStatusRepository
{
private DatabaseConnectionProvider _connectionProvider;
public FileStatusRepository(DatabaseConnectionProvider connectionProvider)
{
_connectionProvider = connectionProvider;
}
public async Task InsertFileStatus(Guid fileId, FileStatus status)
{
using var connection = await _connectionProvider.GetConnectionAsync();
using var command = new NpgsqlCommand("", connection);
command.CommandText =
"INSERT INTO broker.file_status (file_id_fk, file_status_description_id_fk, file_status_date) " +
"VALUES (@fileId, @statusId, NOW()) RETURNING file_status_id_pk;";
command.Parameters.AddWithValue("@fileId", fileId);
command.Parameters.AddWithValue("@statusId", (int)status);
var fileStatusId = await command.ExecuteScalarAsync();
if (fileStatusId == null)
{
throw new InvalidOperationException("No file_status_id_pk was returned after insert.");
}
}
public async Task<List<FileStatusEntity>> GetFileStatusHistory(Guid fileId)
{
using var connection = await _connectionProvider.GetConnectionAsync();
using (var command = new NpgsqlCommand(
"SELECT * " +
"FROM broker.file_status fis " +
"WHERE fis.file_id_fk = @fileId", connection))
{
command.Parameters.AddWithValue("@fileId", fileId);
var fileStatuses = new List<FileStatusEntity>();
using (var reader = await command.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
{
fileStatuses.Add(new FileStatusEntity()
{
FileId = reader.GetGuid(reader.GetOrdinal("file_id_fk")),
Status = (FileStatus)reader.GetInt32(reader.GetOrdinal("file_status_description_id_fk")),
Date = reader.GetDateTime(reader.GetOrdinal("file_status_date")),
});
}
}
return fileStatuses;
}
}
}