-
-
Notifications
You must be signed in to change notification settings - Fork 4.7k
feat: TaskProcessing API #45094
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: TaskProcessing API #45094
Changes from all commits
00894e2
8352b27
4b2acee
17486ad
ee7592f
44b896f
b2b93e4
86317bb
29cbb3c
3b0925a
1c033ae
7a94798
8e56626
5031a2e
843bb62
c9ea537
b150d77
4b954d2
eebeb82
bd5dfd0
3593d9b
9a2cd6b
928d04f
9effb55
996e507
6203c1c
ef44af1
8ccb29a
a5053d3
b85a0ed
5de42a5
2c87809
ef61c50
ec27c53
fff2fb8
4a3b9b8
20c09d1
beeee26
4d9a0ea
f2ab6cb
c079a61
a045e0c
0e06d64
f6f4965
eff862b
ec94a67
19a0aae
f3a88f0
a8afa7f
9cc1a01
715245a
e4b1d23
c020490
b11052f
ac36c78
a9a2cbf
c1f84aa
4ce5aaf
9864fc8
8d06338
f5a8bda
cac812d
6c4992d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,115 @@ | ||
| <?php | ||
|
|
||
| declare(strict_types=1); | ||
|
|
||
| /** | ||
| * @copyright Copyright (c) 2024 Marcel Klehr <[email protected]> | ||
| * | ||
| * @author Marcel Klehr <[email protected]> | ||
| * | ||
| * @license AGPL-3.0-or-later | ||
| * | ||
| * This program is free software: you can redistribute it and/or modify | ||
| * it under the terms of the GNU General Public License as published by | ||
| * the Free Software Foundation, either version 3 of the License, or | ||
| * (at your option) any later version. | ||
| * | ||
| * This program is distributed in the hope that it will be useful, | ||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| * GNU General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU General Public License | ||
| * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| * | ||
| */ | ||
|
|
||
| namespace OC\Core\Migrations; | ||
|
|
||
| use Closure; | ||
| use OCP\DB\ISchemaWrapper; | ||
| use OCP\DB\Types; | ||
| use OCP\Migration\IOutput; | ||
| use OCP\Migration\SimpleMigrationStep; | ||
|
|
||
| /** | ||
| * | ||
| */ | ||
| class Version30000Date20240429122720 extends SimpleMigrationStep { | ||
|
|
||
| /** | ||
| * @param IOutput $output | ||
| * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper` | ||
| * @param array $options | ||
| * @return null|ISchemaWrapper | ||
| */ | ||
| public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper { | ||
| /** @var ISchemaWrapper $schema */ | ||
| $schema = $schemaClosure(); | ||
|
|
||
| if (!$schema->hasTable('taskprocessing_tasks')) { | ||
| $table = $schema->createTable('taskprocessing_tasks'); | ||
|
|
||
| $table->addColumn('id', Types::BIGINT, [ | ||
| 'notnull' => true, | ||
| 'length' => 64, | ||
| 'autoincrement' => true, | ||
| ]); | ||
| $table->addColumn('type', Types::STRING, [ | ||
| 'notnull' => true, | ||
| 'length' => 255, | ||
| ]); | ||
| $table->addColumn('input', Types::TEXT, [ | ||
| 'notnull' => true, | ||
| ]); | ||
| $table->addColumn('output', Types::TEXT, [ | ||
| 'notnull' => false, | ||
| ]); | ||
| $table->addColumn('status', Types::INTEGER, [ | ||
| 'notnull' => false, | ||
| 'length' => 6, | ||
| 'default' => 0, | ||
| ]); | ||
| $table->addColumn('user_id', Types::STRING, [ | ||
| 'notnull' => false, | ||
| 'length' => 64, | ||
| ]); | ||
| $table->addColumn('app_id', Types::STRING, [ | ||
| 'notnull' => true, | ||
| 'length' => 32, | ||
| 'default' => '', | ||
| ]); | ||
| $table->addColumn('custom_id', Types::STRING, [ | ||
| 'notnull' => false, | ||
| 'length' => 255, | ||
| 'default' => '', | ||
| ]); | ||
| $table->addColumn('last_updated', Types::INTEGER, [ | ||
| 'notnull' => false, | ||
| 'length' => 4, | ||
| 'default' => 0, | ||
| 'unsigned' => true, | ||
| ]); | ||
| $table->addColumn('completion_expected_at', Types::DATETIME, [ | ||
| 'notnull' => false, | ||
| ]); | ||
| $table->addColumn('progress', Types::FLOAT, [ | ||
| 'notnull' => false, | ||
| 'default' => 0, | ||
| ]); | ||
| $table->addColumn('error_message', Types::STRING, [ | ||
| 'notnull' => false, | ||
| 'length' => 255, | ||
| ]); | ||
|
|
||
| $table->setPrimaryKey(['id'], 'taskp_tasks_id_index'); | ||
| $table->addIndex(['status', 'type'], 'taskp_tasks_status_type'); | ||
| $table->addIndex(['last_updated'], 'taskp_tasks_updated'); | ||
| $table->addIndex(['user_id', 'app_id', 'custom_id'], 'taskp_tasks_uid_appid_cid'); | ||
|
|
||
| return $schema; | ||
| } | ||
|
|
||
| return null; | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -176,6 +176,37 @@ | |||||||||
| * iconURL: ?string, | ||||||||||
| * iconEmoji: ?string, | ||||||||||
| * } | ||||||||||
| * | ||||||||||
| * @psalm-type CoreTaskProcessingShape = array{ | ||||||||||
| * name: string, | ||||||||||
| * description: string, | ||||||||||
| * type: "Number"|"Text"|"Audio"|"Image"|"Video"|"File"|"ListOfNumbers"|"ListOfTexts"|"ListOfImages"|"ListOfAudios"|"ListOfVideos"|"ListOfFiles", | ||||||||||
| * mandatory: bool, | ||||||||||
| * } | ||||||||||
| * | ||||||||||
| * @psalm-type CoreTaskProcessingTaskType = array{ | ||||||||||
| * name: string, | ||||||||||
| * description: string, | ||||||||||
| * inputShape: CoreTaskProcessingShape[], | ||||||||||
| * outputShape: CoreTaskProcessingShape[], | ||||||||||
|
Comment on lines
+190
to
+191
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Since they are an array the names should be plural as well.
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I disagree. It's the shape of the input. It's one input (because it's input once) so one shape.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hm that makes sense, how about just
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Well it's not an input but just the shape of the input to be :) |
||||||||||
| * } | ||||||||||
| * | ||||||||||
| * @psalm-type CoreTaskProcessingIO = array<string, numeric|list<numeric>|string|list<string>> | ||||||||||
| * | ||||||||||
| * @psalm-type CoreTaskProcessingTask = array{ | ||||||||||
| * id: int, | ||||||||||
| * lastUpdated: int, | ||||||||||
| * type: string, | ||||||||||
| * status: 'STATUS_CANCELLED'|'STATUS_FAILED'|'STATUS_SUCCESSFUL'|'STATUS_RUNNING'|'STATUS_SCHEDULED'|'STATUS_UNKNOWN', | ||||||||||
| * userId: ?string, | ||||||||||
| * appId: string, | ||||||||||
| * input: CoreTaskProcessingIO, | ||||||||||
| * output: null|CoreTaskProcessingIO, | ||||||||||
| * customId: ?string, | ||||||||||
| * completionExpectedAt: ?int, | ||||||||||
| * progress: ?float | ||||||||||
provokateurin marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||
| * } | ||||||||||
| * | ||||||||||
| */ | ||||||||||
| class ResponseDefinitions { | ||||||||||
| } | ||||||||||
Uh oh!
There was an error while loading. Please reload this page.