diff options
Diffstat (limited to 'juick-server-jdbc/src/main/java/com/juick/configuration/DataConfiguration.java')
-rw-r--r-- | juick-server-jdbc/src/main/java/com/juick/configuration/DataConfiguration.java | 178 |
1 files changed, 171 insertions, 7 deletions
diff --git a/juick-server-jdbc/src/main/java/com/juick/configuration/DataConfiguration.java b/juick-server-jdbc/src/main/java/com/juick/configuration/DataConfiguration.java index c728b527..03009565 100644 --- a/juick-server-jdbc/src/main/java/com/juick/configuration/DataConfiguration.java +++ b/juick-server-jdbc/src/main/java/com/juick/configuration/DataConfiguration.java @@ -37,16 +37,16 @@ import java.util.List; */ @Configuration @EnableTransactionManagement -@PropertySource(value = {"classpath:juick.conf"}) +@PropertySource(value = {"classpath:juick.conf"}, ignoreResourceNotFound = true) @ComponentScan(basePackages = {"com.juick.service"}) public class DataConfiguration implements TransactionManagementConfigurer { - @Value("${datasource_driver:com.mysql.jdbc.Driver}") + @Value("${datasource_driver:org.h2.Driver}") private String datasourceDriver; - @Value("${datasource_url:}") + @Value("${datasource_url:jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;mode=MYSQL}") private String datasourceUrl; - @Value("${datasource_user:}") + @Value("${datasource_user:juick}") private String datasourceUser; - @Value("${datasource_password:}") + @Value("${datasource_password:secret}") private String datasourcePassword; // NOTE: The close() method will be called automatically with default @Bean settings @@ -76,9 +76,173 @@ public class DataConfiguration implements TransactionManagementConfigurer { } @Bean - @DependsOn("dataSource") public JdbcTemplate jdbcTemplate() { - return new JdbcTemplate(dataSource()); + JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource()); + if (datasourceDriver.equals("org.h2.Driver")) { + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS bl_users (user_id int(10) unsigned NOT NULL, " + + "bl_user_id int(10) unsigned NOT NULL, ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP )"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS bl_tags (user_id int(10) unsigned NOT NULL, " + + "tag_id int(10) unsigned NOT NULL)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS wl_users (user_id int(10) unsigned NOT NULL, " + + "wl_user_id int(10) unsigned NOT NULL, ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP )"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS messages (" + + "message_id int(10) unsigned NOT NULL AUTO_INCREMENT," + + "user_id int(10) unsigned NOT NULL," + + "place_id int(10) unsigned DEFAULT NULL," + + "lat decimal(10,7) DEFAULT NULL," + + "lon decimal(10,7) DEFAULT NULL," + + "ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP," + + "replies smallint(5) unsigned NOT NULL DEFAULT 0," + + "maxreplyid smallint(5) unsigned NOT NULL DEFAULT 0," + + "privacy tinyint(4) NOT NULL DEFAULT '1'," + + "attach nchar(3) check (attach in ('jpg', 'mp4', 'png'))," + + "readonly tinyint(1) NOT NULL DEFAULT 0," + + "likes smallint(6) NOT NULL DEFAULT 0," + + "`popular` tinyint(4) NOT NULL DEFAULT '0'," + + "hidden tinyint(3) unsigned NOT NULL DEFAULT 0," + + "updated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP" + + ")"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS messages_tags (" + + "message_id int(10) unsigned NOT NULL," + + "tag_id int(10) unsigned NOT NULL" + + ")"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS users (" + + "id int(10) unsigned NOT NULL AUTO_INCREMENT," + + "nick char(64) NOT NULL," + + "`lang` enum('en','ru','fr','fa','__') NOT NULL DEFAULT '__'," + + "passw char(32) NOT NULL," + + "banned tinyint(3) unsigned NOT NULL DEFAULT 0, " + + "PRIMARY KEY(id), UNIQUE KEY(nick))"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS useroptions (" + + "user_id int(10) unsigned NOT NULL," + + "jnotify tinyint(1) NOT NULL DEFAULT 1," + + "`repliesview` tinyint(1) NOT NULL DEFAULT '0'," + + "subscr_active tinyint(1) NOT NULL DEFAULT 1)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS subscr_users (" + + "user_id int(10) unsigned NOT NULL," + + "suser_id int(10) unsigned NOT NULL," + + "jid char(64) DEFAULT NULL," + + "active tinyint(1) NOT NULL DEFAULT 1," + + "ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, " + + "PRIMARY KEY (suser_id, user_id))"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS subscr_messages (" + + "message_id int(10) unsigned NOT NULL," + + "suser_id int(10) unsigned NOT NULL, PRIMARY KEY (suser_id, message_id))"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS subscr_tags (" + + "tag_id int(10) unsigned NOT NULL," + + "suser_id int(10) unsigned NOT NULL, PRIMARY KEY (suser_id, tag_id))"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS messages_txt (" + + "message_id int(10) unsigned NOT NULL," + + "tags varchar(255)," + + "repliesby varchar(96)," + + "txt TEXT)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS tags(" + + "tag_id int(10) unsigned NOT NULL AUTO_INCREMENT," + + "synonym_id int(10) unsigned DEFAULT NULL," + + "name char(48) NOT NULL," + + "top tinyint(1) unsigned NOT NULL DEFAULT 0," + + "stat_messages int(10) unsigned NOT NULL DEFAULT 0," + + "stat_users smallint(5) unsigned NOT NULL DEFAULT 0)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS jids(" + + "user_id int(10) unsigned NOT NULL AUTO_INCREMENT," + + "jid char(64) NOT NULL," + + "active tinyint(1) unsigned NOT NULL DEFAULT '1'," + + "loginhash char(36) unsigned DEFAULT NULL," + + "ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS replies (" + + "message_id int(10) unsigned NOT NULL," + + "reply_id smallint(5) unsigned NOT NULL," + + "user_id int(10) unsigned NOT NULL," + + "replyto smallint(5) unsigned NOT NULL DEFAULT 0," + + "ts timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP," + + "attach nchar(3) check (attach in ('jpg', 'mp4', 'png'))," + + "txt text)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS twitter(" + + "user_id int(10) unsigned NOT NULL," + + "access_token char(64) NOT NULL," + + "access_token_secret char(64) NOT NULL," + + "crosspost tinyint(1) unsigned NOT NULL DEFAULT '1'," + + "uname char(64) NOT NULL," + + "ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS facebook(" + + "user_id int(10) unsigned NOT NULL," + + "fb_id int(20) unsigned NOT NULL," + + "access_token char(255) NOT NULL," + + "loginhash char(36) NOT NULL," + + "crosspost tinyint(1) unsigned NOT NULL DEFAULT '1'," + + "fb_name char(64) NOT NULL," + + "fb_link char(64) NOT NULL," + + "ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS vk(" + + "user_id int(10) unsigned NOT NULL," + + "vk_id int(20) unsigned NOT NULL," + + "access_token char(128) NOT NULL," + + "loginhash char(36) NOT NULL," + + "crosspost tinyint(1) unsigned NOT NULL DEFAULT '1'," + + "vk_name char(64) NOT NULL," + + "vk_link char(64) NOT NULL," + + "ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS emails (" + + " user_id int(10) unsigned NOT NULL," + + " email char(64) NOT NULL," + + " subscr_hour tinyint(4) DEFAULT NULL," + + " PRIMARY KEY (email)" + + ")"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS favorites (" + + " user_id int(10) unsigned NOT NULL," + + " message_id int(10) unsigned NOT NULL," + + " ts datetime NOT NULL" + + ")"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS logins (" + + " user_id int(10) unsigned NOT NULL," + + " hash char(16) NOT NULL," + + " PRIMARY KEY (user_id)" + + ")"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS `telegram` (" + + " `user_id` int(10) unsigned DEFAULT NULL," + + " `tg_id` bigint(20) NOT NULL," + + " `tg_name` char(64) NOT NULL," + + " `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP," + + " `loginhash` char(36) DEFAULT NULL" + + ")"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS `pm` (" + + " `user_id` int(10) unsigned NOT NULL," + + " `user_id_to` int(10) unsigned NOT NULL," + + " `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP," + + " `txt` text NOT NULL" + + ")"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS `pm_streams` (" + + " `user_id` int(10) unsigned NOT NULL," + + " `user_id_to` int(10) unsigned NOT NULL," + + " `lastmessage` datetime NOT NULL," + + " `lastview` datetime DEFAULT NULL," + + " `unread` smallint(5) unsigned NOT NULL DEFAULT '0'" + + ")"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS `android` (" + + " `user_id` int(10) unsigned NOT NULL," + + " `regid` char(255) NOT NULL," + + " `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP" + + ")"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS `ios` (" + + " `user_id` int(10) unsigned NOT NULL," + + " `token` char(64) NOT NULL," + + " `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP" + + ")"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS `winphone` (" + + " `user_id` int(10) unsigned NOT NULL," + + " `url` char(255) NOT NULL," + + " `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP" + + ")"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS `tags_ignore` (" + + " `tag_id` int(10) unsigned NOT NULL" + + ")"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS `users_subscr` (" + + " `user_id` int(10) unsigned NOT NULL," + + " `cnt` smallint(5) unsigned NOT NULL DEFAULT '0'," + + " PRIMARY KEY (`user_id`)" + + ")"); + } + return jdbcTemplate; } @Bean |