Skip to content

Commit 9d6ec38

Browse files
authored
Correctly schedule jobs (#9)
1 parent 3926356 commit 9d6ec38

File tree

8 files changed

+53
-9
lines changed

8 files changed

+53
-9
lines changed

.env.development

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ DATABASE_PASSWORD="test"
77
DATABASE_DBNAME="postgres"
88
DATABASE_PORT="5432"
99

10+
# Redis
11+
REDIS_HOSTNAME="127.0.0.1"
12+
REDIS_PASSWORD="test"
13+
REDIS_MAX_ACTIVE_CON="20"
14+
1015
# Default user
1116
DEFAULT_USER_NAME="Test Test"
1217
DEFAULT_USER_EMAIL="[email protected]"

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
run: swift test
1616

1717
build-and-test-ubuntu:
18-
runs-on: ubuntu-latest
18+
runs-on: ubuntu-22.04
1919
steps:
2020
- uses: actions/checkout@v3
2121
- name: Set up Swift on Ubuntu

.github/workflows/push.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66

77
jobs:
88
docker:
9-
runs-on: ubuntu-latest
9+
runs-on: ubuntu-22.04
1010
steps:
1111
-
1212
name: Set up QEMU

Sources/Grodt/Application/configure.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
import Vapor
2-
import Fluent
3-
import FluentPostgresDriver
42
import FluentSQLiteDriver
53

64
public func configure(_ app: Application) async throws {
@@ -15,6 +13,7 @@ public func configure(_ app: Application) async throws {
1513
app.http.server.configuration.port = port
1614
}
1715
try app.databases.use(DatabaseConfigurationFactory.postgres(from: app.config.postgres), as: .psql)
16+
try app.queues.use(.redis(from: app.config.redis))
1817
}
1918

2019
try await routes(app)

Sources/Grodt/Application/routes.swift

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,13 @@ func routes(_ app: Application) async throws {
7777
try routeBuilder.register(collection: investmentsController)
7878
}
7979

80-
81-
app.queues.schedule(PortfolioPerformanceUpdaterJob(performanceUpdater: portfolioPerformanceUpdater))
82-
.daily()
83-
.at(1, 0)
84-
app.queues.add(LoggingJobEventDelegate(logger: app.logger))
80+
if app.environment != .testing {
81+
let portfolioUpdaterJob = PortfolioPerformanceUpdaterJob(performanceUpdater: portfolioPerformanceUpdater)
82+
app.queues.schedule(portfolioUpdaterJob)
83+
.daily()
84+
.at(3, 0)
85+
app.queues.add(LoggingJobEventDelegate(logger: app.logger))
86+
try app.queues.startScheduledJobs()
87+
try app.queues.startInProcessJobs()
88+
}
8589
}

Sources/Grodt/Configuration/AppConfiguration.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,19 @@ struct AppConfiguration {
2020
fileprivate init() { }
2121
}
2222

23+
struct Redis {
24+
@RequiredEnvironmentVariable(key: "REDIS_HOSTNAME")
25+
var hostName: String
26+
27+
@RequiredEnvironmentVariable(key: "REDIS_PASSWORD")
28+
var password: String
29+
30+
@RequiredEnvironmentVariable(key: "REDIS_MAX_ACTIVE_CON")
31+
var maximumActiveConnections: Int
32+
33+
fileprivate init() { }
34+
}
35+
2336
struct PreconfiguredUser {
2437
@OptionalEnvironmentVariable(key: "DEFAULT_USER_NAME")
2538
var name: String?
@@ -33,6 +46,7 @@ struct AppConfiguration {
3346

3447
private let app: Application
3548
let postgres = Postgres()
49+
let redis = Redis()
3650

3751
@OptionalEnvironmentVariable(key: "PORT")
3852
var port: Int?
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import Vapor
2+
import QueuesRedisDriver
3+
4+
extension Application.Queues.Provider {
5+
static func redis(from configuration: AppConfiguration.Redis) throws -> Self {
6+
let redisConfiguration = try RedisConfiguration(
7+
hostname: configuration.hostName,
8+
password: configuration.password,
9+
pool: .init(maximumConnectionCount: .maximumActiveConnections(configuration.maximumActiveConnections))
10+
)
11+
return .redis(redisConfiguration)
12+
}
13+
}

docker-compose.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,12 @@ services:
77
- 5432:5432
88
environment:
99
POSTGRES_PASSWORD: "test"
10+
11+
redis:
12+
image: redis:latest
13+
restart: always
14+
ports:
15+
- "6379:6379"
16+
command: ["redis-server", "--requirepass", "test"]
17+
environment:
18+
REDIS_PASSWORD: "test"

0 commit comments

Comments
 (0)