feature: #543 Rate limits are now per action-entity instead of per action

This commit is contained in:
jamesread 2025-04-08 01:18:55 +01:00
parent 88f639d29f
commit ba29325c15
1 changed files with 6 additions and 0 deletions

View File

@ -87,6 +87,7 @@ type InternalLogEntry struct {
Process *os.Process
Username string
Index int64
EntityPrefix string
/*
The following 3 properties are obviously on Action normally, but it's useful
@ -249,6 +250,7 @@ func (e *Executor) ExecRequest(req *ExecutionRequest) (*sync.WaitGroup, string)
ActionTitle: "notfound",
ActionIcon: "💩",
Username: req.AuthenticatedUser.Username,
EntityPrefix: req.EntityPrefix,
}
_, isDuplicate := e.GetLog(req.TrackingID)
@ -341,6 +343,10 @@ func getExecutionsCount(rate config.RateSpec, req *ExecutionRequest) int {
then := time.Now().Add(-duration)
for _, logEntry := range req.executor.GetLogsByActionId(req.Action.ID) {
if logEntry.EntityPrefix != req.EntityPrefix {
continue
}
if logEntry.DatetimeStarted.After(then) && !logEntry.Blocked {
executions += 1