Skip to content

Commit e41ec72

Browse files
Move conn out of individual blocks
1 parent 854bb20 commit e41ec72

File tree

1 file changed

+100
-106
lines changed

1 file changed

+100
-106
lines changed

neo-cli/Shell/MainService.cs

Lines changed: 100 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -1079,49 +1079,52 @@ private static void WriteToPsql(SmartContractEvent contractEvent)
10791079
{
10801080
Console.WriteLine(String.Format("Blockheight={0}", contractEvent.blockNumber));
10811081

1082-
WriteToEventTable(contractEvent);
1082+
string connString = Environment.GetEnvironmentVariable("DB_CONNECTION_STRING");
10831083

1084-
if (contractEvent.eventType == "created")
1084+
using (var conn = new NpgsqlConnection(connString))
10851085
{
1086-
WriteToOfferTable(contractEvent);
1087-
}
1086+
conn.Open();
10881087

1089-
if (contractEvent.eventType == "filled")
1090-
{
1091-
WriteToTradeTable(contractEvent);
1088+
WriteToEventTable(contractEvent, conn);
1089+
1090+
if (contractEvent.eventType == "created")
1091+
{
1092+
WriteToOfferTable(contractEvent, conn);
1093+
}
1094+
1095+
if (contractEvent.eventType == "filled")
1096+
{
1097+
WriteToTradeTable(contractEvent, conn);
1098+
}
1099+
1100+
conn.Close();
10921101
}
10931102

10941103
}
10951104

1096-
private static void WriteToEventTable(SmartContractEvent contractEvent)
1105+
private static void WriteToEventTable(SmartContractEvent contractEvent, NpgsqlConnection conn)
10971106
{
10981107
Console.WriteLine(String.Format("Event {0} {1}", contractEvent.eventType, contractEvent.eventPayload));
1099-
string connString = Environment.GetEnvironmentVariable("DB_CONNECTION_STRING");
11001108
try
11011109
{
1102-
using (var conn = new NpgsqlConnection(connString))
1110+
using (var cmd = new NpgsqlCommand(
1111+
"INSERT INTO events (block_number, transaction_hash, contract_hash, event_type, event_payload, event_time, event_index, blockchain, " +
1112+
"created_at, updated_at) " +
1113+
"VALUES (@blockNumber, @transactionHash, @contractHash, @eventType, @eventPayload, @eventTime, @eventIndex, @blockchain, " +
1114+
"current_timestamp, current_timestamp)", conn))
11031115
{
1104-
conn.Open();
1105-
using (var cmd = new NpgsqlCommand(
1106-
"INSERT INTO events (block_number, transaction_hash, contract_hash, event_type, event_payload, event_time, event_index, blockchain, " +
1107-
"created_at, updated_at) " +
1108-
"VALUES (@blockNumber, @transactionHash, @contractHash, @eventType, @eventPayload, @eventTime, @eventIndex, @blockchain, " +
1109-
"current_timestamp, current_timestamp)", conn))
1110-
{
1111-
cmd.Parameters.AddWithValue("blockchain", "neo");
1112-
cmd.Parameters.AddWithValue("blockNumber", NpgsqlDbType.Integer, contractEvent.blockNumber);
1113-
cmd.Parameters.AddWithValue("transactionHash", contractEvent.transactionHash);
1114-
cmd.Parameters.AddWithValue("contractHash", contractEvent.contractHash);
1115-
cmd.Parameters.AddWithValue("eventType", contractEvent.eventType);
1116-
cmd.Parameters.AddWithValue("eventTime", NpgsqlDbType.Timestamp, UnixTimeStampToDateTime(contractEvent.eventTime));
1117-
cmd.Parameters.AddWithValue("eventIndex", NpgsqlDbType.Numeric, contractEvent.eventIndex);
1118-
cmd.Parameters.AddWithValue("eventPayload", NpgsqlDbType.Jsonb, contractEvent.eventPayload.ToString());
1119-
1120-
int nRows = cmd.ExecuteNonQuery();
1121-
1122-
Console.WriteLine(String.Format("Rows inserted={0}", nRows));
1123-
}
1124-
conn.Close();
1116+
cmd.Parameters.AddWithValue("blockchain", "neo");
1117+
cmd.Parameters.AddWithValue("blockNumber", NpgsqlDbType.Integer, contractEvent.blockNumber);
1118+
cmd.Parameters.AddWithValue("transactionHash", contractEvent.transactionHash);
1119+
cmd.Parameters.AddWithValue("contractHash", contractEvent.contractHash);
1120+
cmd.Parameters.AddWithValue("eventType", contractEvent.eventType);
1121+
cmd.Parameters.AddWithValue("eventTime", NpgsqlDbType.Timestamp, UnixTimeStampToDateTime(contractEvent.eventTime));
1122+
cmd.Parameters.AddWithValue("eventIndex", NpgsqlDbType.Numeric, contractEvent.eventIndex);
1123+
cmd.Parameters.AddWithValue("eventPayload", NpgsqlDbType.Jsonb, contractEvent.eventPayload.ToString());
1124+
1125+
int nRows = cmd.ExecuteNonQuery();
1126+
1127+
Console.WriteLine(String.Format("Rows inserted={0}", nRows));
11251128
}
11261129
}
11271130
catch (PostgresException ex)
@@ -1138,49 +1141,44 @@ private static void WriteToEventTable(SmartContractEvent contractEvent)
11381141
}
11391142
}
11401143

1141-
private static void WriteToOfferTable(SmartContractEvent contractEvent)
1144+
private static void WriteToOfferTable(SmartContractEvent contractEvent, NpgsqlConnection conn)
11421145
{
1143-
Console.WriteLine(String.Format("Write to offers {0} {1}", contractEvent.eventType, contractEvent.eventPayload));
1144-
string connString = Environment.GetEnvironmentVariable("DB_CONNECTION_STRING");
1146+
Console.WriteLine(String.Format("Offer {0}", contractEvent.eventPayload));
1147+
11451148
try
11461149
{
1147-
using (var conn = new NpgsqlConnection(connString))
1150+
var address = contractEvent.eventPayload[0].AsString();
1151+
var offerHash = contractEvent.eventPayload[1].AsString();
1152+
var offerAssetId = contractEvent.eventPayload[2].AsString();
1153+
var offerAmount = contractEvent.eventPayload[3].AsString();
1154+
var wantAssetId = contractEvent.eventPayload[4].AsString();
1155+
var wantAmount = contractEvent.eventPayload[5].AsString();
1156+
var availableAmount = offerAmount;
1157+
1158+
using (var cmd = new NpgsqlCommand(
1159+
"INSERT INTO offers (block_number, transaction_hash, contract_hash, event_time, " +
1160+
"blockchain, address, available_amount, offer_hash, offer_asset_id, offer_amount, want_asset_id, want_amount, " +
1161+
"created_at, updated_at)" +
1162+
"VALUES (@blockNumber, @transactionHash, @contractHash, @eventTime, @blockchain, @address, " +
1163+
"@availableAmount, @offerHash, @offerAssetId, @offerAmount, @wantAssetId, @wantAmount, " +
1164+
"current_timestamp, current_timestamp)", conn))
11481165
{
1149-
conn.Open();
1150-
var address = contractEvent.eventPayload[0].AsString();
1151-
var offerHash = contractEvent.eventPayload[1].AsString();
1152-
var offerAssetId = contractEvent.eventPayload[2].AsString();
1153-
var offerAmount = contractEvent.eventPayload[3].AsString();
1154-
var wantAssetId = contractEvent.eventPayload[4].AsString();
1155-
var wantAmount = contractEvent.eventPayload[5].AsString();
1156-
var availableAmount = offerAmount;
1157-
1158-
using (var cmd = new NpgsqlCommand(
1159-
"INSERT INTO offers (block_number, transaction_hash, contract_hash, event_time, " +
1160-
"blockchain, address, available_amount, offer_hash, offer_asset_id, offer_amount, want_asset_id, want_amount, " +
1161-
"created_at, updated_at)" +
1162-
"VALUES (@blockNumber, @transactionHash, @contractHash, @eventTime, @blockchain, @address, " +
1163-
"@availableAmount, @offerHash, @offerAssetId, @offerAmount, @wantAssetId, @wantAmount, " +
1164-
"current_timestamp, current_timestamp)", conn))
1165-
{
1166-
cmd.Parameters.AddWithValue("blockNumber", NpgsqlDbType.Integer, contractEvent.blockNumber);
1167-
cmd.Parameters.AddWithValue("transactionHash", contractEvent.transactionHash);
1168-
cmd.Parameters.AddWithValue("contractHash", contractEvent.contractHash);
1169-
cmd.Parameters.AddWithValue("eventTime", NpgsqlDbType.Timestamp, UnixTimeStampToDateTime(contractEvent.eventTime));
1170-
cmd.Parameters.AddWithValue("blockchain", "neo");
1171-
cmd.Parameters.AddWithValue("address", NpgsqlDbType.Varchar, address);
1172-
cmd.Parameters.AddWithValue("availableAmount", NpgsqlDbType.Numeric, availableAmount);
1173-
cmd.Parameters.AddWithValue("offerHash", NpgsqlDbType.Varchar, offerHash);
1174-
cmd.Parameters.AddWithValue("offerAssetId", NpgsqlDbType.Varchar, offerAssetId);
1175-
cmd.Parameters.AddWithValue("offerAmount", NpgsqlDbType.Numeric, offerAmount);
1176-
cmd.Parameters.AddWithValue("wantAssetId", NpgsqlDbType.Varchar, wantAssetId);
1177-
cmd.Parameters.AddWithValue("wantAmount", NpgsqlDbType.Numeric, wantAmount);
1178-
1179-
int nRows = cmd.ExecuteNonQuery();
1180-
1181-
Console.WriteLine(String.Format("Rows inserted={0}", nRows));
1182-
}
1183-
conn.Close();
1166+
cmd.Parameters.AddWithValue("blockNumber", NpgsqlDbType.Integer, contractEvent.blockNumber);
1167+
cmd.Parameters.AddWithValue("transactionHash", contractEvent.transactionHash);
1168+
cmd.Parameters.AddWithValue("contractHash", contractEvent.contractHash);
1169+
cmd.Parameters.AddWithValue("eventTime", NpgsqlDbType.Timestamp, UnixTimeStampToDateTime(contractEvent.eventTime));
1170+
cmd.Parameters.AddWithValue("blockchain", "neo");
1171+
cmd.Parameters.AddWithValue("address", NpgsqlDbType.Varchar, address);
1172+
cmd.Parameters.AddWithValue("availableAmount", NpgsqlDbType.Numeric, availableAmount);
1173+
cmd.Parameters.AddWithValue("offerHash", NpgsqlDbType.Varchar, offerHash);
1174+
cmd.Parameters.AddWithValue("offerAssetId", NpgsqlDbType.Varchar, offerAssetId);
1175+
cmd.Parameters.AddWithValue("offerAmount", NpgsqlDbType.Numeric, offerAmount);
1176+
cmd.Parameters.AddWithValue("wantAssetId", NpgsqlDbType.Varchar, wantAssetId);
1177+
cmd.Parameters.AddWithValue("wantAmount", NpgsqlDbType.Numeric, wantAmount);
1178+
1179+
int nRows = cmd.ExecuteNonQuery();
1180+
1181+
Console.WriteLine(String.Format("Rows inserted={0}", nRows));
11841182
}
11851183
}
11861184
catch (PostgresException ex)
@@ -1197,47 +1195,43 @@ private static void WriteToOfferTable(SmartContractEvent contractEvent)
11971195
}
11981196
}
11991197

1200-
private static void WriteToTradeTable(SmartContractEvent contractEvent)
1198+
private static void WriteToTradeTable(SmartContractEvent contractEvent, NpgsqlConnection conn)
12011199
{
1202-
Console.WriteLine(String.Format("Write to trades {0} {1}", contractEvent.eventType, contractEvent.eventPayload));
1200+
Console.WriteLine(String.Format("Trade {0}", contractEvent.eventPayload));
1201+
12031202
string connString = Environment.GetEnvironmentVariable("DB_CONNECTION_STRING");
12041203
try
12051204
{
1206-
using (var conn = new NpgsqlConnection(connString))
1205+
var address = contractEvent.eventPayload[0].AsString();
1206+
var offerHash = contractEvent.eventPayload[1].AsString();
1207+
var filledAmount = contractEvent.eventPayload[2].AsString();
1208+
var offerAssetId = contractEvent.eventPayload[3].AsString();
1209+
var offerAmount = contractEvent.eventPayload[4].AsString();
1210+
var wantAssetId = contractEvent.eventPayload[5].AsString();
1211+
var wantAmount = contractEvent.eventPayload[6].AsString();
1212+
1213+
using (var cmd = new NpgsqlCommand(
1214+
"INSERT INTO trades (block_number, transaction_hash, contract_hash, address, offer_hash, filled_amount, " +
1215+
"offer_asset_id, offer_amount, want_asset_id, want_amount, event_time, blockchain, created_at, updated_at)" +
1216+
"VALUES (@blockNumber, @transactionHash, @contractHash, @address, @offerHash, @filledAmount, " +
1217+
"@offerAssetId, @offerAmount, @wantAssetId, @wantAmount, @eventTime, @blockchain, current_timestamp, current_timestamp)", conn))
12071218
{
1208-
conn.Open();
1209-
var address = contractEvent.eventPayload[0].AsString();
1210-
var offerHash = contractEvent.eventPayload[1].AsString();
1211-
var filledAmount = contractEvent.eventPayload[2].AsString();
1212-
var offerAssetId = contractEvent.eventPayload[3].AsString();
1213-
var offerAmount = contractEvent.eventPayload[4].AsString();
1214-
var wantAssetId = contractEvent.eventPayload[5].AsString();
1215-
var wantAmount = contractEvent.eventPayload[6].AsString();
1216-
1217-
using (var cmd = new NpgsqlCommand(
1218-
"INSERT INTO trades (block_number, transaction_hash, contract_hash, address, offer_hash, filled_amount, " +
1219-
"offer_asset_id, offer_amount, want_asset_id, want_amount, event_time, blockchain, created_at, updated_at)" +
1220-
"VALUES (@blockNumber, @transactionHash, @contractHash, @address, @offerHash, @filledAmount, " +
1221-
"@offerAssetId, @offerAmount, @wantAssetId, @wantAmount, @eventTime, @blockchain, current_timestamp, current_timestamp)", conn))
1222-
{
1223-
cmd.Parameters.AddWithValue("blockNumber", NpgsqlDbType.Integer, contractEvent.blockNumber);
1224-
cmd.Parameters.AddWithValue("transactionHash", contractEvent.transactionHash);
1225-
cmd.Parameters.AddWithValue("contractHash", contractEvent.contractHash);
1226-
cmd.Parameters.AddWithValue("address", NpgsqlDbType.Varchar, address);
1227-
cmd.Parameters.AddWithValue("offerHash", NpgsqlDbType.Varchar, offerHash);
1228-
cmd.Parameters.AddWithValue("filledAmount", NpgsqlDbType.Numeric, filledAmount);
1229-
cmd.Parameters.AddWithValue("offerAssetId", NpgsqlDbType.Varchar, offerAssetId);
1230-
cmd.Parameters.AddWithValue("offerAmount", NpgsqlDbType.Numeric, offerAmount);
1231-
cmd.Parameters.AddWithValue("wantAssetId", NpgsqlDbType.Varchar, wantAssetId);
1232-
cmd.Parameters.AddWithValue("wantAmount", NpgsqlDbType.Numeric, wantAmount);
1233-
cmd.Parameters.AddWithValue("eventTime", NpgsqlDbType.Timestamp, UnixTimeStampToDateTime(contractEvent.eventTime));
1234-
cmd.Parameters.AddWithValue("blockchain", "neo");
1235-
1236-
int nRows = cmd.ExecuteNonQuery();
1237-
1238-
Console.WriteLine(String.Format("Rows inserted={0}", nRows));
1239-
}
1240-
conn.Close();
1219+
cmd.Parameters.AddWithValue("blockNumber", NpgsqlDbType.Integer, contractEvent.blockNumber);
1220+
cmd.Parameters.AddWithValue("transactionHash", contractEvent.transactionHash);
1221+
cmd.Parameters.AddWithValue("contractHash", contractEvent.contractHash);
1222+
cmd.Parameters.AddWithValue("address", NpgsqlDbType.Varchar, address);
1223+
cmd.Parameters.AddWithValue("offerHash", NpgsqlDbType.Varchar, offerHash);
1224+
cmd.Parameters.AddWithValue("filledAmount", NpgsqlDbType.Numeric, filledAmount);
1225+
cmd.Parameters.AddWithValue("offerAssetId", NpgsqlDbType.Varchar, offerAssetId);
1226+
cmd.Parameters.AddWithValue("offerAmount", NpgsqlDbType.Numeric, offerAmount);
1227+
cmd.Parameters.AddWithValue("wantAssetId", NpgsqlDbType.Varchar, wantAssetId);
1228+
cmd.Parameters.AddWithValue("wantAmount", NpgsqlDbType.Numeric, wantAmount);
1229+
cmd.Parameters.AddWithValue("eventTime", NpgsqlDbType.Timestamp, UnixTimeStampToDateTime(contractEvent.eventTime));
1230+
cmd.Parameters.AddWithValue("blockchain", "neo");
1231+
1232+
int nRows = cmd.ExecuteNonQuery();
1233+
1234+
Console.WriteLine(String.Format("Rows inserted={0}", nRows));
12411235
}
12421236
}
12431237
catch (PostgresException ex)

0 commit comments

Comments
 (0)