|
| 1 | +// Copyright (c) Cosmo Tech. |
| 2 | +// Licensed under the MIT license. |
1 | 3 | package com.cosmotech.common.postgres
|
2 | 4 |
|
3 |
| -import org.springframework.beans.factory.annotation.Qualifier |
4 | 5 | import org.springframework.beans.factory.annotation.Value
|
5 | 6 | import org.springframework.context.annotation.Bean
|
6 | 7 | import org.springframework.context.annotation.Configuration
|
7 | 8 | import org.springframework.jdbc.core.JdbcTemplate
|
8 | 9 | import org.springframework.jdbc.datasource.DriverManagerDataSource
|
9 |
| -import javax.sql.DataSource |
10 | 10 |
|
11 | 11 | @Configuration
|
12 | 12 | class PostgresConfiguration {
|
13 |
| - @Value("\${csm.platform.internalResultServices.storage.admin.username}") |
14 |
| - private lateinit var adminStorageUsername: String |
15 |
| - @Value("\${csm.platform.internalResultServices.storage.admin.password}") |
16 |
| - private lateinit var adminStoragePassword: String |
17 |
| - @Value("\${csm.platform.internalResultServices.storage.host}") private lateinit var host: String |
18 |
| - @Value("\${csm.platform.internalResultServices.storage.port}") private lateinit var port: String |
19 |
| - @Value("\${csm.platform.internalResultServices.storage.db.name}") private lateinit var dbName: String |
20 |
| - @Value("\${csm.platform.internalResultServices.storage.db.schema}") private lateinit var schema: String |
21 |
| - |
22 |
| - private val jdbcdriverClass = "org.postgresql.Driver" |
23 |
| - |
24 |
| - @Bean |
25 |
| - fun adminDatasource(): DriverManagerDataSource { |
26 |
| - val dataSource = |
27 |
| - DriverManagerDataSource( |
28 |
| - "jdbc:postgresql://$host:$port/$dbName", adminStorageUsername, adminStoragePassword) |
29 |
| - dataSource.setDriverClassName(jdbcdriverClass) |
30 |
| - return dataSource |
31 |
| - } |
32 |
| - |
33 |
| - @Bean |
34 |
| - fun adminJdbcTemplate( |
35 |
| - @Qualifier("adminDatasource") dataSource: DataSource |
36 |
| - ): JdbcTemplate { |
37 |
| - return JdbcTemplate(dataSource) |
38 |
| - } |
39 |
| -} |
40 |
| - |
41 |
| -fun JdbcTemplate.existDB(name: String): Boolean { |
42 |
| - return this.queryForList("SELECT * FROM pg_catalog.pg_database WHERE datname='$name'").size == 1 |
43 |
| -} |
44 |
| - |
45 |
| -fun JdbcTemplate.existTable(name: String): Boolean { |
46 |
| - return this.queryForList( |
47 |
| - "SELECT * FROM information_schema.tables " + "WHERE table_name ilike '${name}'") |
48 |
| - .size >= 1 |
49 |
| -} |
50 |
| - |
51 |
| -fun String.toDataTableName(isProbeData: Boolean): String = |
52 |
| - (if (isProbeData) "P_$this" else "CD_$this").lowercase() |
53 |
| - |
54 |
| -fun JdbcTemplate.createDB(name: String, comment: String? = null): String { |
55 |
| - this.execute("CREATE DATABASE \"$name\"") |
56 |
| - if (comment != null) this.execute("COMMENT ON DATABASE \"$name\" IS '$comment'") |
57 |
| - return name |
58 |
| -} |
59 |
| - |
60 |
| -fun JdbcTemplate.dropDB(name: String) { |
61 |
| - if (this.existDB(name)) this.execute("DROP DATABASE \"$name\"") |
| 13 | + @Value("\${csm.platform.internalResultServices.storage.admin.username}") |
| 14 | + private lateinit var adminStorageUsername: String |
| 15 | + @Value("\${csm.platform.internalResultServices.storage.admin.password}") |
| 16 | + private lateinit var adminStoragePassword: String |
| 17 | + @Value("\${csm.platform.internalResultServices.storage.host}") private lateinit var host: String |
| 18 | + @Value("\${csm.platform.internalResultServices.storage.port}") private lateinit var port: String |
| 19 | + @Value("\${csm.platform.internalResultServices.storage.datasets.name:cosmotech}") |
| 20 | + private lateinit var dbName: String |
| 21 | + |
| 22 | + private val jdbcdriverClass = "org.postgresql.Driver" |
| 23 | + |
| 24 | + @Bean |
| 25 | + fun adminJdbcTemplate(): JdbcTemplate { |
| 26 | + val dataSource = |
| 27 | + DriverManagerDataSource( |
| 28 | + "jdbc:postgresql://$host:$port/$dbName", adminStorageUsername, adminStoragePassword) |
| 29 | + dataSource.setDriverClassName(jdbcdriverClass) |
| 30 | + return JdbcTemplate(dataSource) |
| 31 | + } |
62 | 32 | }
|
0 commit comments