@@ -27,10 +27,10 @@ extends Atlantis\TerminalApp {
2727 ////////////////////////////////////////////////////////////////
2828
2929 #[Console\Meta\Command('get')]
30- #[Console\Meta\Value('--tz', TRUE, 'Default: UTC')]
31- #[Console\Meta\Value('--date', TRUE, 'Format: YYYY-MM-DD')]
32- #[Console\Meta\Value('--dstart', TRUE, 'Format: YYYY-MM-DD')]
33- #[Console\Meta\Value('--dstop', TRUE, 'Format: YYYY-MM-DD')]
30+ #[Console\Meta\Value('--tz', 'Default: UTC')]
31+ #[Console\Meta\Value('--date', 'Format: YYYY-MM-DD')]
32+ #[Console\Meta\Value('--dstart', 'Format: YYYY-MM-DD')]
33+ #[Console\Meta\Value('--dstop', 'Format: YYYY-MM-DD')]
3434 public function
3535 HandleGetStats():
3636 int {
@@ -80,18 +80,29 @@ extends Atlantis\TerminalApp {
8080 ////////////////////////////////////////////////////////////////
8181
8282 #[Console\Meta\Command('trim')]
83+ #[Console\Meta\Toggle('--commit', 'Without this nothing bad can happen.')]
84+ #[Console\Meta\Value('--limit', 'Delete the rows in chunks of <limit> rows to be nice to the server.')]
85+ #[Console\Meta\Toggle('--1m', 'Delete rows older than 1 month.')]
86+ #[Console\Meta\Toggle('--2m', 'Delete rows older than 2 months.')]
87+ #[Console\Meta\Toggle('--3m', 'Delete rows older than 3 months (and the default).')]
88+ #[Console\Meta\Toggle('--6m', 'Delete rows older than 6 months.')]
8389 public function
8490 HandleTrim():
8591 int {
8692
8793 $OptCommit = $this->GetOption('commit') ?? FALSE;
94+ $OptLimit = (int)$this->GetOption('limit');
95+
8896 $OptTimeThen = match(TRUE) {
8997 ($this->GetOption('1m'))
9098 => '-30 days',
9199
92100 ($this->GetOption('2m'))
93101 => '-60 days',
94102
103+ ($this->GetOption('3m'))
104+ => '-90 days',
105+
95106 ($this->GetOption('6m'))
96107 => '-180 days',
97108
@@ -123,6 +134,11 @@ extends Atlantis\TerminalApp {
123134 'TimeCreated <= :ThenTime'
124135 ));
125136
137+ if($OptLimit > 0) {
138+ //$QueryFind->Limit($OptLimit);
139+ $QueryTrim->Limit($OptLimit);
140+ }
141+
126142 $Args = [
127143 ':ThenTime' => $Then->GetUnixtime()
128144 ];
@@ -136,25 +152,34 @@ extends Atlantis\TerminalApp {
136152 'QueryTrim' => (string)$QueryTrim
137153 ]);
138154
155+ $Timer->Reset()->Start();
139156 $Found = $QueryFind->Query($Args);
157+ $Timer->Stop();
140158
141159 $this->PrintStatus(sprintf(
142- 'Found %d rows...',
143- $Found->GetCount()
160+ 'Found %s rows in %s...',
161+ number_format($Found->GetCount()),
162+ (new Common\Units\Timeframe(
163+ Start: 0, Stop: $Timer->Get() + 1
164+ ))->Get(Common\Units\Timeframe::FormatLong)
144165 ));
145166
146167 if($OptCommit) {
147- $Timer->Start();
168+ HitIt:
169+ $Timer->Reset()->Start();
148170 $Trimmed = $QueryTrim->Query($Args);
149171 $Timer->Stop();
150172
151173 $this->PrintStatus(sprintf(
152- 'Trimmed %d rows in %s...',
153- $Trimmed->GetCount(),
174+ 'Trimmed %s rows in %s...',
175+ number_format( $Trimmed->GetCount() ),
154176 (new Common\Units\Timeframe(
155177 Start: 0, Stop: $Timer->Get() + 1
156- ))->Get()
178+ ))->Get(Common\Units\Timeframe::FormatLong )
157179 ));
180+
181+ if($Trimmed->GetCount() === $OptLimit)
182+ goto HitIt;
158183 }
159184
160185 return 0;
0 commit comments