Skip to content

Commit 7950389

Browse files
committed
Schedule job
1 parent 3926356 commit 7950389

File tree

6 files changed

+47
-5
lines changed

6 files changed

+47
-5
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]"

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: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,11 @@ func routes(_ app: Application) async throws {
7777
try routeBuilder.register(collection: investmentsController)
7878
}
7979

80-
81-
app.queues.schedule(PortfolioPerformanceUpdaterJob(performanceUpdater: portfolioPerformanceUpdater))
80+
let portfolioUpdaterJob = PortfolioPerformanceUpdaterJob(performanceUpdater: portfolioPerformanceUpdater)
81+
app.queues.schedule(portfolioUpdaterJob)
8282
.daily()
83-
.at(1, 0)
83+
.at(3, 0)
8484
app.queues.add(LoggingJobEventDelegate(logger: app.logger))
85+
try app.queues.startScheduledJobs()
86+
try app.queues.startInProcessJobs()
8587
}

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)