io.resys.thena.docdb.sql.defaults.DefaultSqlMapper Maven / Gradle / Ivy
The newest version!
package io.resys.thena.docdb.sql.defaults;
/*-
* #%L
* thena-docdb-pgsql
* %%
* Copyright (C) 2021 Copyright 2021 ReSys OÜ
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import java.time.LocalDateTime;
import java.util.Optional;
import io.resys.thena.docdb.api.models.ImmutableBlob;
import io.resys.thena.docdb.api.models.ImmutableCommit;
import io.resys.thena.docdb.api.models.ImmutableRef;
import io.resys.thena.docdb.api.models.ImmutableRepo;
import io.resys.thena.docdb.api.models.ImmutableTag;
import io.resys.thena.docdb.api.models.ImmutableTree;
import io.resys.thena.docdb.api.models.ImmutableTreeValue;
import io.resys.thena.docdb.api.models.Objects.Blob;
import io.resys.thena.docdb.api.models.Objects.Commit;
import io.resys.thena.docdb.api.models.Objects.Ref;
import io.resys.thena.docdb.api.models.Objects.Tag;
import io.resys.thena.docdb.api.models.Objects.Tree;
import io.resys.thena.docdb.api.models.Objects.TreeValue;
import io.resys.thena.docdb.api.models.Repo;
import io.resys.thena.docdb.spi.ClientCollections;
import io.resys.thena.docdb.sql.SqlMapper;
import io.vertx.mutiny.sqlclient.Row;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class DefaultSqlMapper implements SqlMapper {
private final ClientCollections ctx;
@Override
public Repo repo(Row row) {
return ImmutableRepo.builder()
.id(row.getString("id"))
.rev(row.getString("rev"))
.name(row.getString("name"))
.prefix(row.getString("prefix"))
.build();
}
@Override
public Commit commit(Row row) {
return ImmutableCommit.builder()
.id(row.getString("id"))
.author(row.getString("author"))
.dateTime(LocalDateTime.parse(row.getString("datetime")))
.message(row.getString("message"))
.parent(Optional.ofNullable(row.getString("parent")))
.merge(Optional.ofNullable(row.getString("merge")))
.tree(row.getString("tree"))
.build();
}
@Override
public Tree tree(Row row) {
return ImmutableTree.builder().id(row.getString("id")).build();
}
@Override
public TreeValue treeItem(Row row) {
return ImmutableTreeValue.builder()
.name(row.getString("name"))
.blob(row.getString("blob"))
.build();
}
@Override
public Tag tag(Row row) {
return ImmutableTag.builder()
.author(row.getString("author"))
.dateTime(LocalDateTime.parse(row.getString("datetime")))
.message(row.getString("message"))
.commit(row.getString("commit"))
.name(row.getString("id"))
.build();
}
@Override
public Ref ref(Row row) {
return ImmutableRef.builder()
.name(row.getString("name"))
.commit(row.getString("commit"))
.build();
}
@Override
public Blob blob(Row row) {
return ImmutableBlob.builder()
.id(row.getString("id"))
.value(row.getJsonObject("value"))
.build();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy