Skip to content

Instantly share code, notes, and snippets.

@jrfondren
Last active May 16, 2019 23:45
Show Gist options
  • Save jrfondren/e9d60761ce727acabc6256ebd22e6115 to your computer and use it in GitHub Desktop.
Save jrfondren/e9d60761ce727acabc6256ebd22e6115 to your computer and use it in GitHub Desktop.
func ternary(a, b, c: bool): range[0..7] =
int(a) shl 2 and int(b) shl 1 and int(c)
proc renderVisibleRows(db: DbConn): string =
template rows(query: varargs[untyped]): untyped =
for row in db.fastRows(query):
result.add renderVisibleRow(row)
when defined(samplever):
rows(sql"SELECT * FROM domains WHERE rowid in (SELECT rowid FROM domains WHERE ruling IS NULL ORDER BY RANDOM() LIMIT 25) ORDER BY HOST ASC, OWNER ASC, USER ASC, DOMAIN ASC")
return
case ternary(config.skipDecided, config.limit > 0, config.filter != "")
of 0b000: rows(sql"SELECT * FROM domains ORDER BY HOST ASC, OWNER ASC, USER ASC, DOMAIN ASC")
of 0b001: rows(sql"SELECT * FROM domains WHERE domain LIKE ? ORDER BY HOST ASC, OWNER ASC, USER ASC, DOMAIN ASC", config.filter)
of 0b010: rows(sql"SELECT * FROM domains ORDER BY HOST ASC, OWNER ASC, USER ASC, DOMAIN ASC LIMIT ?", config.limit)
of 0b011: rows(sql"SELECT * FROM domains WHERE domain LIKE ? ORDER BY HOST ASC, OWNER ASC, USER ASC, DOMAIN ASC LIMIT ?", config.filter, config.limit)
of 0b100: rows(sql"SELECT * FROM domains WHERE ruling IS NULL ORDER BY HOST ASC, OWNER ASC, USER ASC, DOMAIN ASC")
of 0b101: rows(sql"SELECT * FROM domains WHERE domain LIKE ? AND ruling IS NULL ORDER BY HOST ASC, OWNER ASC, USER ASC, DOMAIN ASC", config.filter)
of 0b110: rows(sql"SELECT * FROM domains WHERE ruling IS NULL ORDER BY HOST ASC, OWNER ASC, USER ASC, DOMAIN ASC LIMIT ?", config.limit)
of 0b111: rows(sql"SELECT * FROM domains WHERE domain LIKE ? AND ruling IS NULL ORDER BY HOST ASC, OWNER ASC, USER ASC, DOMAIN ASC LIMIT ?", config.filter, config.limit)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment