WIP: Submit transcoding jobs via a HTTP API #6
@ -32,12 +32,13 @@ public class JDBCTranscriptionRepository implements TranscriptionRepository {
|
||||
@Override
|
||||
public void save(Transcription transcription) {
|
||||
jdbcClient.sql("""
|
||||
INSERT INTO transcriptions (id, owner, callback_uri, output_format)
|
||||
VALUES (:id, :owner, :callback_uri, :output_format)
|
||||
INSERT INTO transcriptions (id, owner, callback_uri, language, output_format)
|
||||
VALUES (:id, :owner, :callback_uri, :language, :output_format)
|
||||
""")
|
||||
.param("id", transcription.id())
|
||||
.param("owner", transcription.owner().getName())
|
||||
.param("callback_uri", transcription.callbackUri().toString())
|
||||
.param("language", transcription.language())
|
||||
.param("output_format", transcription.outputFormat().name())
|
||||
.update();
|
||||
}
|
||||
@ -45,7 +46,7 @@ public class JDBCTranscriptionRepository implements TranscriptionRepository {
|
||||
@Override
|
||||
public Optional<Transcription> findByOwnerAndId(Principal owner, UUID uuid) {
|
||||
return jdbcClient.sql("""
|
||||
SELECT id, owner, callback_uri, output_format
|
||||
SELECT id, owner, callback_uri, language, output_format
|
||||
FROM transcriptions
|
||||
WHERE id = :id AND owner = :owner
|
||||
""")
|
||||
@ -140,7 +141,7 @@ public class JDBCTranscriptionRepository implements TranscriptionRepository {
|
||||
@Override
|
||||
public List<Transcription> getProcessingTranscriptions() {
|
||||
return jdbcClient.sql("""
|
||||
SELECT id, owner, callback_uri, output_format
|
||||
SELECT id, owner, callback_uri, language, output_format
|
||||
FROM transcriptions
|
||||
WHERE notification_success = FALSE
|
||||
AND id IN (
|
||||
@ -245,8 +246,9 @@ public class JDBCTranscriptionRepository implements TranscriptionRepository {
|
||||
UUID id = UUID.fromString(rs.getString("id"));
|
||||
Principal owner = new SimplePrincipal(rs.getString("owner"));
|
||||
URI callbackUri = URI.create(rs.getString("callback_uri"));
|
||||
String language = rs.getString("language");
|
||||
OutputFormat outputFormat = OutputFormat.valueOf(rs.getString("output_format"));
|
||||
return new Transcription(id, owner, callbackUri, outputFormat);
|
||||
return new Transcription(id, owner, callbackUri, language, outputFormat);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -58,9 +58,13 @@ public class ApiController {
|
||||
@RequestBody CreateTranscriptionRequest createTranscriptionRequest)
|
||||
{
|
||||
try {
|
||||
if (createTranscriptionRequest.language() != null && createTranscriptionRequest.language().length() != 2) {
|
||||
throw new InvalidLanguage(createTranscriptionRequest.language());
|
||||
}
|
||||
URI callbackUri = new URI(createTranscriptionRequest.callback());
|
||||
OutputFormat outputFormat = parseOutputFormat(createTranscriptionRequest.outputFormat());
|
||||
CreateTranscription createTranscription = new CreateTranscription(owner, callbackUri, outputFormat);
|
||||
CreateTranscription createTranscription = new CreateTranscription(owner, callbackUri,
|
||||
createTranscriptionRequest.language(), outputFormat);
|
||||
Transcription transcription = transcriptionService.createTranscription(createTranscription);
|
||||
return new TranscriptionCreatedResponse(transcription.id());
|
||||
} catch (URISyntaxException e) {
|
||||
|
@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public record CreateTranscriptionRequest(
|
||||
@JsonProperty(value = "callback", required = true) String callback,
|
||||
@JsonProperty(value = "language") String language,
|
||||
@JsonProperty(value = "outputformat", required = true) String outputFormat)
|
||||
{
|
||||
}
|
||||
|
15
src/main/java/se/su/dsv/whisperapi/api/InvalidLanguage.java
Normal file
15
src/main/java/se/su/dsv/whisperapi/api/InvalidLanguage.java
Normal file
@ -0,0 +1,15 @@
|
||||
package se.su.dsv.whisperapi.api;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.web.ErrorResponseException;
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
public class InvalidLanguage extends ErrorResponseException {
|
||||
public InvalidLanguage(String language) {
|
||||
super(HttpStatus.BAD_REQUEST);
|
||||
setType(URI.create("https://gitea.dsv.su.se/DMC/whisper-frontend/wiki/Errors#invalid-language"));
|
||||
setTitle("Invalid language");
|
||||
setDetail("The language '" + language + "' is not supported, it must be a valid two-letter ISO-639-1 code.");
|
||||
}
|
||||
}
|
@ -3,5 +3,5 @@ package se.su.dsv.whisperapi.core;
|
||||
import java.net.URI;
|
||||
import java.security.Principal;
|
||||
|
||||
public record CreateTranscription(Principal owner, URI callbackUri, OutputFormat outputFormat) {
|
||||
public record CreateTranscription(Principal owner, URI callbackUri, String language, OutputFormat outputFormat) {
|
||||
}
|
||||
|
@ -4,5 +4,5 @@ import java.net.URI;
|
||||
import java.security.Principal;
|
||||
import java.util.UUID;
|
||||
|
||||
public record Transcription(UUID id, Principal owner, URI callbackUri, OutputFormat outputFormat) {
|
||||
public record Transcription(UUID id, Principal owner, URI callbackUri, String language, OutputFormat outputFormat) {
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ public class TranscriptionService {
|
||||
id,
|
||||
createTranscription.owner(),
|
||||
createTranscription.callbackUri(),
|
||||
createTranscription.language(),
|
||||
createTranscription.outputFormat());
|
||||
transcriptionRepository.save(transcription);
|
||||
return transcription;
|
||||
@ -83,6 +84,7 @@ public class TranscriptionService {
|
||||
|
||||
record WhisperJob(
|
||||
@JsonProperty("jobfile") String absolutePathToFileToBeTranscribed,
|
||||
@JsonProperty("language") String language,
|
||||
@JsonProperty("outputformat") String outputFormat,
|
||||
@JsonProperty("origin") String origin,
|
||||
@JsonProperty("callback") String callbackUri)
|
||||
@ -90,6 +92,7 @@ public class TranscriptionService {
|
||||
}
|
||||
WhisperJob whisperJob = new WhisperJob(
|
||||
fileToBeTranscribed.toAbsolutePath().toString(),
|
||||
transcription.language(),
|
||||
toWhisperFormat(transcription.outputFormat()),
|
||||
transcription.owner().getName(),
|
||||
callbackUri.toString());
|
||||
|
2
src/main/resources/db/migration/V7__language.sql
Normal file
2
src/main/resources/db/migration/V7__language.sql
Normal file
@ -0,0 +1,2 @@
|
||||
ALTER TABLE `transcriptions`
|
||||
ADD COLUMN `language` CHAR(2);
|
Loading…
x
Reference in New Issue
Block a user