Skip to content

Commit 46e0943

Browse files
authored
Merge pull request #1 from akreit/copilot/build-etl-pipeline-scala
Build streaming ETL pipeline: Postgres → Parquet/S3 using Doobie, FS2, and Parquet4s
2 parents ee54bc1 + 6289108 commit 46e0943

30 files changed

Lines changed: 2633 additions & 1 deletion

.github/workflows/ci.yml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
container:
13+
image: sbtscala/scala-sbt:eclipse-temurin-alpine-25.0.1_8_1.11.7_3.7.4
14+
steps:
15+
- name: Checkout code
16+
uses: actions/checkout@v4
17+
18+
- name: Cache SBT
19+
uses: actions/cache@v4
20+
with:
21+
path: |
22+
/root/.ivy2/cache
23+
/root/.sbt
24+
/root/.coursier
25+
key: sbt-cache-${{ runner.os }}-${{ hashFiles('**/build.sbt') }}
26+
restore-keys: |
27+
sbt-cache-${{ runner.os }}-
28+
29+
- name: Run scalafmt check
30+
run: sbt scalafmtCheckAll
31+
32+
- name: Run scalafix check
33+
run: sbt "scalafixAll --check"
34+
35+
- name: Run tests with coverage
36+
run: |
37+
sbt coverage test coverageReport
38+
39+
- name: Upload coverage report artifact
40+
uses: actions/upload-artifact@v4
41+
with:
42+
name: coverage-report
43+
path: target/scala-3.7.4/scoverage-report
44+
45+

.gitignore

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,36 @@
33

44
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
55
hs_err_pid*
6+
7+
# SBT
8+
target/
9+
project/target/
10+
project/project/
11+
.bsp/
12+
13+
# Scala-IDE specific
14+
.scala_dependencies
15+
.worksheet
16+
.cache
17+
.cache-main
18+
.cache-tests
19+
20+
# IntelliJ
21+
.idea/
22+
*.iml
23+
*.iws
24+
*.ipr
25+
out/
26+
27+
# VS Code
28+
.vscode/
29+
.metals/
30+
.bloop/
31+
metals.sbt
32+
33+
# Mac
34+
.DS_Store
35+
36+
# Docker volumes
37+
postgres_data/
38+
localstack_data/

.scalafix.conf

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
rules = [
2+
ExplicitResultTypes,
3+
OrganizeImports,
4+
RemoveUnused,
5+
LeakingImplicitClassVal,
6+
DisableSyntax,
7+
NoAutoTupling,
8+
NoValInForComprehension,
9+
RedundantSyntax,
10+
ProcedureSyntax
11+
]
12+
13+
OrganizeImports {
14+
groups = [
15+
"scala.*",
16+
"java.*",
17+
"javax.*",
18+
"org.*",
19+
"com.*"
20+
]
21+
removeUnused = true
22+
targetDialect = "Scala3"
23+
}

.scalafmt.conf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
version = 3.9.4
2+
encoding = UTF-8
3+
runner.dialect = scala3
4+

0 commit comments

Comments
 (0)