Skip to content

Commit

Permalink
Merge branch 'main' into shueisha-artsdigital
Browse files Browse the repository at this point in the history
  • Loading branch information
yuki777 committed May 23, 2023
2 parents ded984e + 40f90b6 commit 982c432
Show file tree
Hide file tree
Showing 40 changed files with 481 additions and 245 deletions.
53 changes: 14 additions & 39 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,49 +3,24 @@ name: Test
on: push

jobs:
test-macos:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest]
os: [macos-latest, ubuntu-latest]
test_script: [
mongodb-4.4.10.sh,
mongodb-5.0.3.sh,
mysql-5.7.31.sh,
mysql-8.0.30.sh,
postgresql-12.4.sh,
postgresql-13.2.sh,
redis-6.0.16.sh,
redis-6.2.6.sh
]
steps:
- uses: actions/checkout@v3
- name: Run mongodb test
- name: Run test
run: |
cd tests
/bin/bash mongodb-test.sh
- name: Run mysql test
run: |
cd tests
/bin/bash mysql-test.sh
- name: Run postgresql test
run: |
cd tests
/bin/bash postgresql-test.sh
- name: Run redis test
run: |
cd tests
/bin/bash redis-test.sh
test-ubuntu:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
steps:
- uses: actions/checkout@v3
- name: Run mongodb test
run: |
cd tests
/bin/bash mongodb-test.sh
- name: Run mysql test
run: |
cd tests
/bin/bash mysql-test.sh
- name: Run postgresql test
run: |
cd tests
/bin/bash postgresql-test.sh
- name: Run redis test
run: |
cd tests
/bin/bash redis-test.sh
/bin/bash ${{ matrix.test_script }}
34 changes: 15 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ git clone https://github.com/pj8/dbdb.git
cd dbdb
```

<details><summary>MySQL</summary><div>

## MySQL

### Manage MySQL Server on localhost
Expand Down Expand Up @@ -53,7 +55,9 @@ cd dbdb
- 8.0.23
- 8.0.30

---
</div></details>

<details><summary>PostgreSQL</summary><div>

## PostgreSQL

Expand All @@ -79,7 +83,9 @@ cd dbdb
- 12.6
- 13.2

---
</div></details>

<details><summary>Redis</summary><div>

## Redis

Expand All @@ -105,7 +111,9 @@ cd dbdb
- 6.0.16
- 6.2.6

---
</div></details>

<details><summary>MongoDB</summary><div>

## MongoDB

Expand All @@ -130,7 +138,7 @@ cd dbdb
- 4.4.10
- 5.0.3

---
</div></details>

## Tips

Expand All @@ -149,7 +157,7 @@ cd dbdb
### Start by creating the database server if it does not exist.

```
# Try create, then start server.
# Create and start
/path/to/dbdb/mysql/create-start.sh mysql5-foo 5.7.31 3306
```

Expand All @@ -158,19 +166,7 @@ cd dbdb
- You can use `dbdb.sh` for that.

```
/path/to/dbdb/dbdb.sh
mongodb.4.4.3.mongo4 is stopped.
/path/to/dbdb/mongodb/start.sh mongo4
/path/to/dbdb/mongodb/stop.sh mongo4
/path/to/dbdb/mongodb/restart.sh mongo4
mysql.5.7.31.mysql5-foo is running.
/path/to/dbdb/mysql/start.sh mysql5-foo
/path/to/dbdb/mysql/stop.sh mysql5-foo
/path/to/dbdb/mysql/restart.sh mysql5-foo
...
./dbdb.sh
```

### How to start a database server when my server booted?
Expand All @@ -184,6 +180,6 @@ mysql.5.7.31.mysql5-foo is running.
# Start mysql8 with port 13306
@reboot /path/to/dbdb/mysql/start.sh mysql8-bar
# Try create, then start the server
# Create and start
@reboot /path/to/dbdb/redis/create-start.sh redis1 6.0.10 6379
```
47 changes: 33 additions & 14 deletions dbdb.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
#!/bin/bash
set -eu

getInstallDir() {
suffix=dbdb
if [ -z "${XDG_DATA_HOME+x}" ]; then
echo "$HOME/.local/share/$suffix"
else
echo "$XDG_DATA_HOME/$suffix"
fi
}

# Get format option
format=""
while getopts ":f:" opt; do
Expand All @@ -25,34 +34,34 @@ RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m'

# Get current directory
currentDir="$(
cd "$(dirname "$0")" >/dev/null 2>&1
pwd -P
)"
cd "$currentDir"
installDir=$(getInstallDir)

normalOutputs=""
jsonOutputs=""
dbTypes=(mongodb mysql postgresql redis)
for dbType in "${dbTypes[@]}"; do
for dbVersion in $(ls "$currentDir/$dbType/versions" 2>/dev/null); do
if [ -d "$currentDir/$dbType/versions/$dbVersion" ]; then
for dbServerName in $(ls "$currentDir/$dbType/versions/$dbVersion/datadir" 2>/dev/null); do
if [ -d "$currentDir/$dbType/versions/$dbVersion/basedir" ]; then
if [ -d "$currentDir/$dbType/versions/$dbVersion/datadir/$dbServerName" ]; then
for dbVersion in $(ls "$installDir/$dbType/versions" 2>/dev/null); do
if [ -d "$installDir/$dbType/versions/$dbVersion" ]; then
for dbServerName in $(ls "$installDir/$dbType/versions/$dbVersion/datadir" 2>/dev/null); do
if [ -d "$installDir/$dbType/versions/$dbVersion/basedir" ]; then
if [ -d "$installDir/$dbType/versions/$dbVersion/datadir/$dbServerName" ]; then
# port
dbPort="{port}"
if [ -f "$currentDir/$dbType/versions/$dbVersion/datadir/$dbServerName/$dbType.port" ]; then
dbPort=$(cat "$currentDir/$dbType/versions/$dbVersion/datadir/$dbServerName/$dbType.port")
elif [ -f "$currentDir/$dbType/versions/$dbVersion/datadir/$dbServerName/$dbType.port.last" ]; then
dbPort=$(cat "$currentDir/$dbType/versions/$dbVersion/datadir/$dbServerName/$dbType.port.last")
elif [ -f "$currentDir/$dbType/versions/$dbVersion/datadir/$dbServerName/$dbType.port.init" ]; then
dbPort=$(cat "$currentDir/$dbType/versions/$dbVersion/datadir/$dbServerName/$dbType.port.init")
if [ -f "$installDir/$dbType/versions/$dbVersion/datadir/$dbServerName/$dbType.port" ]; then
dbPort=$(cat "$installDir/$dbType/versions/$dbVersion/datadir/$dbServerName/$dbType.port")
elif [ -f "$installDir/$dbType/versions/$dbVersion/datadir/$dbServerName/$dbType.port.last" ]; then
dbPort=$(cat "$installDir/$dbType/versions/$dbVersion/datadir/$dbServerName/$dbType.port.last")
elif [ -f "$installDir/$dbType/versions/$dbVersion/datadir/$dbServerName/$dbType.port.init" ]; then
dbPort=$(cat "$installDir/$dbType/versions/$dbVersion/datadir/$dbServerName/$dbType.port.init")
fi

# pid
pidFile="$currentDir/$dbType/versions/$dbVersion/datadir/$dbServerName/$dbType.pid"
pidFile="$installDir/$dbType/versions/$dbVersion/datadir/$dbServerName/$dbType.pid"

# status
if [ -f "$pidFile" ] && pgrep -F "$pidFile" >/dev/null; then
Expand Down Expand Up @@ -87,7 +96,17 @@ for dbType in "${dbTypes[@]}"; do

# jsonOutputs
availableCommands='["start.sh", "stop.sh", "restart.sh", "port.sh", "status.sh", "connect.sh", "delete.sh"]'
jsonOutputs="$jsonOutputs{\"name\": \"$dbServerName\", \"type\": \"$dbType\", \"version\": \"$dbVersion\", \"port\": \"$dbPort\", \"status\": \"$status\", \"commandPath\": \"$currentDir/$dbType/\", \"availableCommands\": $availableCommands, \"dataDir\": \"$currentDir/$dbType/versions/$dbVersion/datadir/$dbServerName\", \"confPath\": \"$currentDir/$dbType/versions/$dbVersion/datadir/$dbServerName/$confName\"},"
jsonOutputs="$jsonOutputs{
\"name\": \"$dbServerName\",
\"type\": \"$dbType\",
\"version\": \"$dbVersion\",
\"port\": \"$dbPort\",
\"status\": \"$status\",
\"commandPath\": \"$currentDir/$dbType/\",
\"availableCommands\": $availableCommands,
\"dataDir\": \"$installDir/$dbType/versions/$dbVersion/datadir/$dbServerName\",
\"confPath\": \"$installDir/$dbType/versions/$dbVersion/datadir/$dbServerName/$confName\"
},"
fi
fi
done
Expand Down
Loading

0 comments on commit 982c432

Please sign in to comment.