@@ -76,7 +76,7 @@ func AuditLog(t testing.TB, db database.Store, seed database.AuditLog) database.
7676}
7777
7878func ConnectionLog (t testing.TB , db database.Store , seed database.UpsertConnectionLogParams ) database.ConnectionLog {
79- log , err := db . UpsertConnectionLog ( genCtx , database.UpsertConnectionLogParams {
79+ arg := database.UpsertConnectionLogParams {
8080 ID : takeFirst (seed .ID , uuid .New ()),
8181 Time : takeFirst (seed .Time , dbtime .Now ()),
8282 OrganizationID : takeFirst (seed .OrganizationID , uuid .New ()),
@@ -89,7 +89,7 @@ func ConnectionLog(t testing.TB, db database.Store, seed database.UpsertConnecti
8989 Int32 : takeFirst (seed .Code .Int32 , 0 ),
9090 Valid : takeFirst (seed .Code .Valid , false ),
9191 },
92- Ip : pqtype.Inet {
92+ IP : pqtype.Inet {
9393 IPNet : net.IPNet {
9494 IP : net .IPv4 (127 , 0 , 0 , 1 ),
9595 Mask : net .IPv4Mask (255 , 255 , 255 , 255 ),
@@ -117,9 +117,53 @@ func ConnectionLog(t testing.TB, db database.Store, seed database.UpsertConnecti
117117 Valid : takeFirst (seed .DisconnectReason .Valid , false ),
118118 },
119119 ConnectionStatus : takeFirst (seed .ConnectionStatus , database .ConnectionStatusConnected ),
120+ }
121+
122+ var disconnectTime sql.NullTime
123+ if arg .ConnectionStatus == database .ConnectionStatusDisconnected {
124+ disconnectTime = sql.NullTime {Time : arg .Time , Valid : true }
125+ }
126+
127+ err := db .BatchUpsertConnectionLogs (genCtx , database.BatchUpsertConnectionLogsParams {
128+ ID : []uuid.UUID {arg .ID },
129+ ConnectTime : []time.Time {arg .Time },
130+ OrganizationID : []uuid.UUID {arg .OrganizationID },
131+ WorkspaceOwnerID : []uuid.UUID {arg .WorkspaceOwnerID },
132+ WorkspaceID : []uuid.UUID {arg .WorkspaceID },
133+ WorkspaceName : []string {arg .WorkspaceName },
134+ AgentName : []string {arg .AgentName },
135+ Type : []database.ConnectionType {arg .Type },
136+ Code : []int32 {arg .Code .Int32 },
137+ CodeValid : []bool {arg .Code .Valid },
138+ Ip : []pqtype.Inet {arg .IP },
139+ UserAgent : []string {arg .UserAgent .String },
140+ UserID : []uuid.UUID {arg .UserID .UUID },
141+ SlugOrPort : []string {arg .SlugOrPort .String },
142+ ConnectionID : []uuid.UUID {arg .ConnectionID .UUID },
143+ DisconnectReason : []string {arg .DisconnectReason .String },
144+ DisconnectTime : []time.Time {disconnectTime .Time },
120145 })
121146 require .NoError (t , err , "insert connection log" )
122- return log
147+
148+ // Query back the actual row from the database. On upsert
149+ // conflict the DB keeps the original row's ID, so we can't
150+ // rely on arg.ID. Match on the conflict key for rows with a
151+ // connection_id, or by primary key for NULL connection_id.
152+ rows , err := db .GetConnectionLogsOffset (genCtx , database.GetConnectionLogsOffsetParams {})
153+ require .NoError (t , err , "query connection logs" )
154+ for _ , row := range rows {
155+ if arg .ConnectionID .Valid {
156+ if row .ConnectionLog .ConnectionID == arg .ConnectionID &&
157+ row .ConnectionLog .WorkspaceID == arg .WorkspaceID &&
158+ row .ConnectionLog .AgentName == arg .AgentName {
159+ return row .ConnectionLog
160+ }
161+ } else if row .ConnectionLog .ID == arg .ID {
162+ return row .ConnectionLog
163+ }
164+ }
165+ require .Failf (t , "connection log not found" , "id=%s" , arg .ID )
166+ return database.ConnectionLog {} // unreachable
123167}
124168
125169func Template (t testing.TB , db database.Store , seed database.Template ) database.Template {
0 commit comments