nsmcp::AccessAnalytics method drop (protected)

 <instance of nsmcp::AccessAnalytics[i]> drop reason cutoff \
    [ limit ]

Defined in /usr/local/ns/tcl/nsmcp/lib/access-analytics.tcl

Parameters:
reason (required)
cutoff (required)
limit (optional, defaults to "0")

Testcases:
No testcase defined.
Source code:
set db ${:db}; set now [clock seconds]
if {$reason eq "age"} {
    set where {start < $cutoff}
} else {
    set where {rowid IN (SELECT rowid FROM nsmcp_access_requests ORDER BY start LIMIT $limit)}
}
set count 0
$db execute "SELECT count(*) AS n,coalesce(min(start),0) AS first,coalesce(max(start),0) AS last FROM nsmcp_access_requests WHERE $where" row {
    set count $row(n); set first $row(first); set last $row(last)
}
if {$count==0} {return}
$db execute "DELETE FROM nsmcp_access_requests WHERE $where"
incr :rowCount -$count
$db execute {INSERT INTO nsmcp_access_evictions(dropped_at,first_time,last_time,rows,reason) VALUES($now,$first,$last,$count,$reason)}
set old [$db scalar {SELECT value FROM nsmcp_access_metadata WHERE key='droppedThrough'}]
set through [expr {$old eq "" ? $last : max(double($old),$last)}]
$db execute {INSERT OR REPLACE INTO nsmcp_access_metadata VALUES('droppedThrough',$through);
    INSERT OR REPLACE INTO nsmcp_access_metadata VALUES('lastEvictionAt',$now)}
set limit ${:evictionLimit}
$db execute {DELETE FROM nsmcp_access_evictions WHERE id NOT IN (SELECT id FROM nsmcp_access_evictions ORDER BY id DESC LIMIT $limit)}
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: