Skip to content

Commit

Permalink
Added repos and entities packages. Added PolarisStoreService interfac…
Browse files Browse the repository at this point in the history
…e and CRUD methods on database and table entries.
  • Loading branch information
ArtfulCoder committed Nov 1, 2021
1 parent 4d8161f commit 0328634
Show file tree
Hide file tree
Showing 15 changed files with 207 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@


import com.netflix.metacat.connector.polaris.configs.PolarisPersistenceConfig;
import com.netflix.metacat.connector.polaris.data.PolarisConnectorTest;
import com.netflix.metacat.connector.polaris.store.PolarisConnectorTest;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureDataJpa;
import org.springframework.boot.test.context.SpringBootTest;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,21 @@
import com.netflix.metacat.common.server.connectors.ConnectorRequestContext;
import com.netflix.metacat.common.server.connectors.exception.ConnectorException;
import com.netflix.metacat.common.server.connectors.model.DatabaseInfo;
import com.netflix.metacat.connector.polaris.data.PolarisConnector;
import com.netflix.metacat.connector.polaris.store.PolarisStoreConnector;

/**
* database service for polaris connector.
*/
public class PolarisConnectorDatabaseService implements ConnectorDatabaseService {
private final PolarisConnector polarisConnector;
private final PolarisStoreConnector polarisConnector;

/**
* Constructor.
*
* @param polarisConnector polaris connector
*/
public PolarisConnectorDatabaseService(
final PolarisConnector polarisConnector
final PolarisStoreConnector polarisConnector
) {
this.polarisConnector = polarisConnector;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.netflix.metacat.connector.polaris.configs;

import com.netflix.metacat.connector.polaris.PolarisConnectorDatabaseService;
import com.netflix.metacat.connector.polaris.data.PolarisConnector;
import com.netflix.metacat.connector.polaris.store.PolarisStoreConnector;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;

Expand All @@ -18,7 +18,7 @@ public class PolarisConnectorConfig {
@Bean
@ConditionalOnMissingBean(PolarisConnectorDatabaseService.class)
public PolarisConnectorDatabaseService polarisDatabaseService(
final PolarisConnector polarisConnector
final PolarisStoreConnector polarisConnector
) {
return new PolarisConnectorDatabaseService(polarisConnector);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.netflix.metacat.connector.polaris.configs;


import com.netflix.metacat.connector.polaris.data.PolarisConnector;
import com.netflix.metacat.connector.polaris.data.PolarisDatabaseRepository;
import com.netflix.metacat.connector.polaris.data.PolarisTableRepository;
import com.netflix.metacat.connector.polaris.store.PolarisStoreConnector;
import com.netflix.metacat.connector.polaris.store.repos.PolarisDatabaseRepository;
import com.netflix.metacat.connector.polaris.store.repos.PolarisTableRepository;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
Expand All @@ -20,8 +20,8 @@
*
*/
@Configuration
@EntityScan("com.netflix.metacat.connector.polaris")
@EnableJpaRepositories("com.netflix.metacat.connector.polaris.data")
@EntityScan("com.netflix.metacat.connector.polaris.store.entities")
@EnableJpaRepositories("com.netflix.metacat.connector.polaris.store.repos")
public class PolarisPersistenceConfig {

/**
Expand Down Expand Up @@ -49,14 +49,14 @@ public DataSourceProperties dataSourceProperties() {
}

/**
* Get an implementation of {@link PolarisConnector}.
* Get an implementation of {@link PolarisStoreConnector}.
* @param repo - PolarisDatabaseRepository
* @param tblRepo - PolarisTableRepository
* @return PolarisConnector
* @return PolarisStoreConnector
*/
@Bean
public PolarisConnector polarisConnector(
public PolarisStoreConnector polarisConnector(
final PolarisDatabaseRepository repo, final PolarisTableRepository tblRepo) {
return new PolarisConnector(repo, tblRepo);
return new PolarisStoreConnector(repo, tblRepo);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
package com.netflix.metacat.connector.polaris.data;
package com.netflix.metacat.connector.polaris.store;

import com.netflix.metacat.connector.polaris.store.entities.PolarisDatabaseEntity;
import com.netflix.metacat.connector.polaris.store.entities.PolarisTableEntity;
import com.netflix.metacat.connector.polaris.store.repos.PolarisDatabaseRepository;
import com.netflix.metacat.connector.polaris.store.repos.PolarisTableRepository;
import java.util.Optional;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
Expand All @@ -15,7 +20,7 @@
* This class exposes APIs for CRUD operations.
*/
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class PolarisConnector {
public class PolarisStoreConnector implements PolarisStoreService {
private final PolarisDatabaseRepository dbRepo;
private final PolarisTableRepository tblRepo;

Expand All @@ -24,11 +29,34 @@ public class PolarisConnector {
* @param databaseName database name
* @return entity
*/
@Override
public PolarisDatabaseEntity createDatabase(final String databaseName) {
final PolarisDatabaseEntity e = new PolarisDatabaseEntity(databaseName);
return dbRepo.save(e);
}

/**
* Fetches database entry.
*
* @param databaseName database name
* @return Polaris Database entity
*/
@Override
public Optional<PolarisDatabaseEntity> getDatabase(final String databaseName) {
// TODO
return Optional.empty();
}

/**
* Updates existing database entity.
*
* @param databaseEntity databaseEntity to save.
*/
@Override
public void updateDatabase(final PolarisDatabaseEntity databaseEntity) {
// TODO
}

boolean databaseExists(final String dbId) {
return dbRepo.existsById(dbId);
}
Expand All @@ -39,16 +67,40 @@ boolean databaseExists(final String dbId) {
* @param tableName table name
* @return entity corresponding to created table entry
*/
@Override
public PolarisTableEntity createTable(final String dbName, final String tableName) {
final PolarisTableEntity e = new PolarisTableEntity(dbName, tableName);
return tblRepo.save(e);
}

/**
* Fetches table entry.
*
* @param tableName table name
* @return Polaris Table entity
*/
@Override
public Optional<PolarisTableEntity> getTable(final String tableName) {
// TODO
return Optional.empty();
}

/**
* Updates existing table entry.
*
* @param tableEntity tableEntity to save.
*/
@Override
public void updateTable(final PolarisTableEntity tableEntity) {
// TODO
}

/**
* Deletes entry for table.
* @param dbName database name
* @param tableName table name
*/
@Override
@Transactional
public void deleteTable(final String dbName, final String tableName) {
tblRepo.deleteByName(dbName, tableName);
Expand All @@ -64,6 +116,7 @@ boolean tableExists(final String tblId) {
* @param tableNamePrefix table name prefix. can be empty.
* @return table names in the database.
*/
@Override
public List<String> getTables(final String databaseName, final String tableNamePrefix) {
final int pageFetchSize = 1000;
final List<String> retval = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package com.netflix.metacat.connector.polaris.store;

import com.netflix.metacat.connector.polaris.store.entities.PolarisDatabaseEntity;
import com.netflix.metacat.connector.polaris.store.entities.PolarisTableEntity;
import java.util.List;
import java.util.Optional;

/**
* Interface methods for Polaris Store CRUD access.
*/
public interface PolarisStoreService {

/**
* Creates a database entry.
* @param databaseName database name
* @return Polaris Database entity.
*/
PolarisDatabaseEntity createDatabase(String databaseName);

/**
* Fetches database entry.
* @param databaseName database name
* @return Polaris Database entity
*/
Optional<PolarisDatabaseEntity> getDatabase(String databaseName);

/**
* Updates existing database entity.
* @param databaseEntity databaseEntity to save.
*/
void updateDatabase(PolarisDatabaseEntity databaseEntity);

/**
* Creates a table entry.
* @param dbName database name
* @param tableName table name
* @return Polaris Table entity.
*/
PolarisTableEntity createTable(String dbName, String tableName);

/**
* Fetches table entry.
* @param tableName table name
* @return Polaris Table entity
*/
Optional<PolarisTableEntity> getTable(String tableName);

/**
* Updates existing table entry.
* @param tableEntity tableEntity to save.
*/
void updateTable(PolarisTableEntity tableEntity);

/**
* Deletes the table entry.
* @param dbName database name.
* @param tableName table name.
*/
void deleteTable(String dbName, String tableName);

/**
* Gets tables in the database and tableName prefix.
* @param databaseName database name
* @param tableNamePrefix table name prefix
* @return list of table names in the database with the table name prefix.
*/
List<String> getTables(String databaseName, String tableNamePrefix);
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.netflix.metacat.connector.polaris.data;
package com.netflix.metacat.connector.polaris.store.entities;

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
Expand Down Expand Up @@ -38,7 +38,11 @@ public class PolarisDatabaseEntity {
@Column(name = "name", nullable = false, unique = true, updatable = false)
private final String dbName;

PolarisDatabaseEntity(final String dbName) {
/**
* Constructor for Polaris Database Entity.
* @param dbName database name
*/
public PolarisDatabaseEntity(final String dbName) {
this.dbName = dbName;
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.netflix.metacat.connector.polaris.data;
package com.netflix.metacat.connector.polaris.store.entities;

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
Expand Down Expand Up @@ -41,7 +41,12 @@ public class PolarisTableEntity {
@Column(name = "tbl_name", nullable = false)
private final String tblName;

PolarisTableEntity(final String dbName, final String tblName) {
/**
* Constructor for Polaris Table Entity.
* @param dbName database name
* @param tblName table name
*/
public PolarisTableEntity(final String dbName, final String tblName) {
this.dbName = dbName;
this.tblName = tblName;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/*
*
* Copyright 2021 Netflix, Inc.
*
* 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.
*
*/

/**
* Polaris entity classes.
*/
package com.netflix.metacat.connector.polaris.store.entities;
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@
/**
* Polaris data classes.
*/
package com.netflix.metacat.connector.polaris.data;
package com.netflix.metacat.connector.polaris.store;
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.netflix.metacat.connector.polaris.data;
package com.netflix.metacat.connector.polaris.store.repos;

import com.netflix.metacat.connector.polaris.store.entities.PolarisDatabaseEntity;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
import org.springframework.data.jpa.repository.JpaRepository;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.netflix.metacat.connector.polaris.data;
package com.netflix.metacat.connector.polaris.store.repos;

import com.netflix.metacat.connector.polaris.store.entities.PolarisTableEntity;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import org.springframework.data.jpa.repository.JpaRepository;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/*
*
* Copyright 2021 Netflix, Inc.
*
* 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.
*
*/

/**
* Polaris repo classes.
*/
package com.netflix.metacat.connector.polaris.store.repos;
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package com.netflix.metacat.connector.polaris.data;
package com.netflix.metacat.connector.polaris.store;


import com.netflix.metacat.connector.polaris.configs.PolarisPersistenceConfig;
import com.netflix.metacat.connector.polaris.store.entities.PolarisDatabaseEntity;
import com.netflix.metacat.connector.polaris.store.entities.PolarisTableEntity;
import com.netflix.metacat.connector.polaris.store.repos.PolarisDatabaseRepository;
import com.netflix.metacat.connector.polaris.store.repos.PolarisTableRepository;
import org.junit.Assert;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -35,7 +39,7 @@ public class PolarisConnectorTest {
private PolarisTableRepository tblRepo;

@Autowired
private PolarisConnector polarisConnector;
private PolarisStoreConnector polarisConnector;

private static String generateDatabaseName() {
return DB_NAME_FOO + "_" + random.nextLong();
Expand Down
Loading

0 comments on commit 0328634

Please sign in to comment.