Skip to content

Commit

Permalink
[Multi-Database Support][h2] add h2 init sql
Browse files Browse the repository at this point in the history
  • Loading branch information
ZhangJian He committed Apr 19, 2023
1 parent b30cbe5 commit 1bf1e97
Show file tree
Hide file tree
Showing 7 changed files with 133 additions and 6 deletions.
1 change: 1 addition & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ Apollo 2.2.0
* [[Multi-Database Support][pg] Make JdbcUserDetailsManager compat with postgre](https://github.com/apolloconfig/apollo/pull/4790)
* [refactor(apollo logging): Simplify the default log path to `/opt/logs`](https://github.com/apolloconfig/apollo/pull/4833)
* [Add a configuration config-service.cache.key.ignore-case to control whether the cache key is case-sensitive](https://github.com/apolloconfig/apollo/pull/4820)
* [[Multi-Database Support][h2] Support run on h2](https://github.com/apolloconfig/apollo/pull/4851)

------------------
All issues and pull requests are [here](https://github.com/apolloconfig/apollo/milestone/13?closed=1)
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,15 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Profile;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.jdbc.datasource.init.DatabasePopulatorUtils;
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import java.util.Map;
import java.util.Objects;

Expand All @@ -43,17 +50,28 @@ public class BizDBPropertySource extends RefreshablePropertySource {

private final ServerConfigRepository serverConfigRepository;

private final DataSource dataSource;

public BizDBPropertySource(final String name,
final Map<String, Object> source,
final ServerConfigRepository serverConfigRepository) {
final ServerConfigRepository serverConfigRepository, DataSource dataSource) {
super(name, source);
this.serverConfigRepository = serverConfigRepository;
this.dataSource = dataSource;
}

@Autowired
public BizDBPropertySource(final ServerConfigRepository serverConfigRepository) {
public BizDBPropertySource(final ServerConfigRepository serverConfigRepository, DataSource dataSource) {
super("DBConfig", Maps.newConcurrentMap());
this.serverConfigRepository = serverConfigRepository;
this.dataSource = dataSource;
}

@Profile("h2")
@PostConstruct
public void runSqlScript() throws Exception {
Resource resource = new ClassPathResource("jpa/init.h2.sql");
DatabasePopulatorUtils.execute(new ResourceDatabasePopulator(resource), dataSource);
}

String getCurrentDataCenter() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.test.util.ReflectionTestUtils;

import javax.sql.DataSource;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
Expand All @@ -42,11 +44,14 @@ public class BizConfigTest {
@Mock
private ServerConfigRepository serverConfigRepository;

@Mock
private DataSource dataSource;

private BizConfig bizConfig;

@Before
public void setUp() throws Exception {
bizConfig = new BizConfig(new BizDBPropertySource(serverConfigRepository));
bizConfig = new BizConfig(new BizDBPropertySource(serverConfigRepository, dataSource));
ReflectionTestUtils.setField(bizConfig, "environment", environment);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.junit.Test;
import org.mockito.Mock;

import javax.sql.DataSource;
import java.util.List;

import static org.junit.Assert.assertEquals;
Expand All @@ -43,6 +44,10 @@ public class BizDBPropertySourceTest extends AbstractUnitTest {

@Mock
private ServerConfigRepository serverConfigRepository;

@Mock
private DataSource dataSource;

private BizDBPropertySource propertySource;

private String clusterConfigKey = "clusterKey";
Expand All @@ -54,7 +59,7 @@ public class BizDBPropertySourceTest extends AbstractUnitTest {

@Before
public void initTestData() {
propertySource = spy(new BizDBPropertySource(serverConfigRepository));
propertySource = spy(new BizDBPropertySource(serverConfigRepository, dataSource));

List<ServerConfig> configs = Lists.newLinkedList();

Expand Down
22 changes: 22 additions & 0 deletions apollo-configservice/src/main/resources/jpa/init.h2.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
--
-- Copyright 2023 Apollo Authors
--
-- 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.
--
INSERT INTO "ServerConfig" ("Key", "Cluster", "Value", "Comment", "DataChange_CreatedBy", "DataChange_CreatedTime")
VALUES
('eureka.service.url', 'default', 'http://localhost:8080/eureka/', 'Eureka服务Url,多个service以英文逗号分隔', 'default', '1970-01-01 00:00:00'),
('namespace.lock.switch', 'default', 'false', '一次发布只能有一个人修改开关', 'default', '1970-01-01 00:00:00'),
('item.key.length.limit', 'default', '128', 'item key 最大长度限制', 'default', '1970-01-01 00:00:00'),
('item.value.length.limit', 'default', '20000', 'item value最大长度限制', 'default', '1970-01-01 00:00:00'),
('config-service.cache.enabled', 'default', 'false', 'ConfigService是否开启缓存,开启后能提高性能,但是会增大内存消耗!', 'default', '1970-01-01 00:00:00');
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,15 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Profile;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.jdbc.datasource.init.DatabasePopulatorUtils;
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import java.util.Map;
import java.util.Objects;

Expand All @@ -40,16 +47,27 @@ public class PortalDBPropertySource extends RefreshablePropertySource {

private final ServerConfigRepository serverConfigRepository;

private final DataSource dataSource;

public PortalDBPropertySource(final String name,
final Map<String, Object> source,
final ServerConfigRepository serverConfigRepository) {
final ServerConfigRepository serverConfigRepository, DataSource dataSource) {
super(name, source);
this.serverConfigRepository = serverConfigRepository;
this.dataSource = dataSource;
}
@Autowired
public PortalDBPropertySource(final ServerConfigRepository serverConfigRepository) {
public PortalDBPropertySource(final ServerConfigRepository serverConfigRepository, DataSource dataSource) {
super("DBConfig", Maps.newConcurrentMap());
this.serverConfigRepository = serverConfigRepository;
this.dataSource = dataSource;
}

@Profile("h2")
@PostConstruct
public void runSqlScript() throws Exception {
Resource resource = new ClassPathResource("jpa/init.h2.sql");
DatabasePopulatorUtils.execute(new ResourceDatabasePopulator(resource), dataSource);
}

@Override
Expand Down
58 changes: 58 additions & 0 deletions apollo-portal/src/main/resources/jpa/init.h2.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
--
-- Copyright 2023 Apollo Authors
--
-- 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.
--
CREATE TABLE SPRING_SESSION
(
PRIMARY_ID VARCHAR(255) NOT NULL,
SESSION_ID VARCHAR(255) NOT NULL,
CREATION_TIME BIGINT NOT NULL,
LAST_ACCESS_TIME BIGINT NOT NULL,
MAX_INACTIVE_INTERVAL INT NOT NULL,
EXPIRY_TIME BIGINT NOT NULL,
PRINCIPAL_NAME VARCHAR(100),
CONSTRAINT SPRING_SESSION_PK PRIMARY KEY (PRIMARY_ID)
);

CREATE UNIQUE INDEX SPRING_SESSION_IX1 ON SPRING_SESSION (SESSION_ID);
CREATE INDEX SPRING_SESSION_IX2 ON SPRING_SESSION (EXPIRY_TIME);
CREATE INDEX SPRING_SESSION_IX3 ON SPRING_SESSION (PRINCIPAL_NAME);

CREATE TABLE SPRING_SESSION_ATTRIBUTES
(
SESSION_PRIMARY_ID VARCHAR(255) NOT NULL,
ATTRIBUTE_NAME VARCHAR(200) NOT NULL,
ATTRIBUTE_BYTES BLOB NOT NULL,
CONSTRAINT SPRING_SESSION_ATTRIBUTES_PK PRIMARY KEY (SESSION_PRIMARY_ID, ATTRIBUTE_NAME),
CONSTRAINT SPRING_SESSION_ATTRIBUTES_FK FOREIGN KEY (SESSION_PRIMARY_ID) REFERENCES SPRING_SESSION (PRIMARY_ID) ON DELETE CASCADE
);

INSERT INTO "ServerConfig" ("Key", "Value", "Comment", "DataChange_CreatedBy", "DataChange_CreatedTime")
VALUES
('apollo.portal.envs', 'dev', '可支持的环境列表', 'default', '1970-01-01 00:00:00'),
('organizations', '[{"orgId":"TEST1","orgName":"样例部门1"},{"orgId":"TEST2","orgName":"样例部门2"}]', '部门列表', 'default', '1970-01-01 00:00:00'),
('superAdmin', 'apollo', 'Portal超级管理员', 'default', '1970-01-01 00:00:00'),
('api.readTimeout', '10000', 'http接口read timeout', 'default', '1970-01-01 00:00:00'),
('consumer.token.salt', 'someSalt', 'consumer token salt', 'default', '1970-01-01 00:00:00'),
('admin.createPrivateNamespace.switch', 'true', '是否允许项目管理员创建私有namespace', 'default', '1970-01-01 00:00:00'),
('configView.memberOnly.envs', 'pro', '只对项目成员显示配置信息的环境列表,多个env以英文逗号分隔', 'default', '1970-01-01 00:00:00'),
('apollo.portal.meta.servers', '{}', '各环境Meta Service列表', 'default', '1970-01-01 00:00:00');

INSERT INTO "Users" ("Username", "Password", "UserDisplayName", "Email", "Enabled")
VALUES
('apollo', '$2a$10$7r20uS.BQ9uBpf3Baj3uQOZvMVvB1RN3PYoKE94gtz2.WAOuiiwXS', 'apollo', '[email protected]', 1);

INSERT INTO "Authorities" ("Username", "Authority")
VALUES
('apollo', 'ROLE_user');

0 comments on commit 1bf1e97

Please sign in to comment.