Skip to content

Commit

Permalink
Pricing feature (#484)
Browse files Browse the repository at this point in the history
  • Loading branch information
Geczy authored Feb 26, 2025
1 parent 21a7ee4 commit 8d924ef
Show file tree
Hide file tree
Showing 30 changed files with 1,191 additions and 143 deletions.
166 changes: 165 additions & 1 deletion .github/workflows/builder.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,37 +4,201 @@ on:
push:
branches:
- "**"
# Define paths to trigger the workflow only for relevant changes
paths:
- 'packages/dota/**' # Trigger for dota service changes
- 'packages/twitch-chat/**' # Trigger for twitch-chat service changes
- 'packages/steam/**' # Trigger for steam service changes
- 'packages/twitch-events/**' # Trigger for twitch-events service changes
- 'packages/Dockerfile.bun' # Shared Dockerfile for bun-based services
- 'packages/Dockerfile.steam' # Dockerfile for steam
- 'docker-compose.yml' # Compose file changes might affect all services

jobs:
build:
dota:
runs-on: ubuntu-latest
environment: prod
permissions:
packages: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2 # Fetch the current and previous commit for diff

- name: Check for changes in dota service
id: dota-changes
run: |
git diff --name-only HEAD^ HEAD | grep -q "^packages/dota/" && echo "changed=true" >> $GITHUB_OUTPUT || echo "changed=false" >> $GITHUB_OUTPUT
git diff --name-only HEAD^ HEAD | grep -q "^packages/Dockerfile.bun" && echo "dockerfile_changed=true" >> $GITHUB_OUTPUT || echo "dockerfile_changed=false" >> $GITHUB_OUTPUT
git diff --name-only HEAD^ HEAD | grep -q "^docker-compose.yml" && echo "compose_changed=true" >> $GITHUB_OUTPUT || echo "compose_changed=false" >> $GITHUB_OUTPUT
- name: Extract branch name
if: steps.dota-changes.outputs.changed == 'true' || steps.dota-changes.outputs.dockerfile_changed == 'true' || steps.dota-changes.outputs.compose_changed == 'true'
shell: bash
run: echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV

- name: Set up Docker Buildx
if: steps.dota-changes.outputs.changed == 'true' || steps.dota-changes.outputs.dockerfile_changed == 'true' || steps.dota-changes.outputs.compose_changed == 'true'
uses: docker/setup-buildx-action@v3

- name: Login to ghcr
if: steps.dota-changes.outputs.changed == 'true' || steps.dota-changes.outputs.dockerfile_changed == 'true' || steps.dota-changes.outputs.compose_changed == 'true'
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GHA_PAT }}

- name: Build and push
if: steps.dota-changes.outputs.changed == 'true' || steps.dota-changes.outputs.dockerfile_changed == 'true' || steps.dota-changes.outputs.compose_changed == 'true'
uses: docker/bake-action@v6
with:
push: true
provenance: false
targets: dota
set: |
*.cache-from=type=gha
*.cache-to=type=gha,mode=max
*.platform=linux/arm64,linux/amd64/v3
dota.tags=ghcr.io/${{ github.repository_owner }}/dota:${{ env.BRANCH_NAME }}
twitch-chat:
runs-on: ubuntu-latest
environment: prod
permissions:
packages: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2

- name: Check for changes in twitch-chat service
id: twitch-chat-changes
run: |
git diff --name-only HEAD^ HEAD | grep -q "^packages/twitch-chat/" && echo "changed=true" >> $GITHUB_OUTPUT || echo "changed=false" >> $GITHUB_OUTPUT
git diff --name-only HEAD^ HEAD | grep -q "^packages/Dockerfile.bun" && echo "dockerfile_changed=true" >> $GITHUB_OUTPUT || echo "dockerfile_changed=false" >> $GITHUB_OUTPUT
git diff --name-only HEAD^ HEAD | grep -q "^docker-compose.yml" && echo "compose_changed=true" >> $GITHUB_OUTPUT || echo "compose_changed=false" >> $GITHUB_OUTPUT
- name: Extract branch name
if: steps.twitch-chat-changes.outputs.changed == 'true' || steps.twitch-chat-changes.outputs.dockerfile_changed == 'true' || steps.twitch-chat-changes.outputs.compose_changed == 'true'
shell: bash
run: echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV

- name: Set up Docker Buildx
if: steps.twitch-chat-changes.outputs.changed == 'true' || steps.twitch-chat-changes.outputs.dockerfile_changed == 'true' || steps.twitch-chat-changes.outputs.compose_changed == 'true'
uses: docker/setup-buildx-action@v3

- name: Login to ghcr
if: steps.twitch-chat-changes.outputs.changed == 'true' || steps.twitch-chat-changes.outputs.dockerfile_changed == 'true' || steps.twitch-chat-changes.outputs.compose_changed == 'true'
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GHA_PAT }}

- name: Build and push
if: steps.twitch-chat-changes.outputs.changed == 'true' || steps.twitch-chat-changes.outputs.dockerfile_changed == 'true' || steps.twitch-chat-changes.outputs.compose_changed == 'true'
uses: docker/bake-action@v6
with:
push: true
provenance: false
targets: twitch-chat
set: |
*.cache-from=type=gha
*.cache-to=type=gha,mode=max
*.platform=linux/arm64,linux/amd64/v3
twitch-chat.tags=ghcr.io/${{ github.repository_owner }}/twitch-chat:${{ env.BRANCH_NAME }}
steam:
runs-on: ubuntu-latest
environment: prod
permissions:
packages: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2

- name: Check for changes in steam service
id: steam-changes
run: |
git diff --name-only HEAD^ HEAD | grep -q "^packages/steam/" && echo "changed=true" >> $GITHUB_OUTPUT || echo "changed=false" >> $GITHUB_OUTPUT
git diff --name-only HEAD^ HEAD | grep -q "^packages/Dockerfile.steam" && echo "dockerfile_changed=true" >> $GITHUB_OUTPUT || echo "dockerfile_changed=false" >> $GITHUB_OUTPUT
git diff --name-only HEAD^ HEAD | grep -q "^docker-compose.yml" && echo "compose_changed=true" >> $GITHUB_OUTPUT || echo "compose_changed=false" >> $GITHUB_OUTPUT
- name: Extract branch name
if: steps.steam-changes.outputs.changed == 'true' || steps.steam-changes.outputs.dockerfile_changed == 'true' || steps.steam-changes.outputs.compose_changed == 'true'
shell: bash
run: echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV

- name: Set up Docker Buildx
if: steps.steam-changes.outputs.changed == 'true' || steps.steam-changes.outputs.dockerfile_changed == 'true' || steps.steam-changes.outputs.compose_changed == 'true'
uses: docker/setup-buildx-action@v3

- name: Login to ghcr
if: steps.steam-changes.outputs.changed == 'true' || steps.steam-changes.outputs.dockerfile_changed == 'true' || steps.steam-changes.outputs.compose_changed == 'true'
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GHA_PAT }}

- name: Build and push
if: steps.steam-changes.outputs.changed == 'true' || steps.steam-changes.outputs.dockerfile_changed == 'true' || steps.steam-changes.outputs.compose_changed == 'true'
uses: docker/bake-action@v6
with:
push: true
provenance: false
targets: steam
set: |
*.cache-from=type=gha
*.cache-to=type=gha,mode=max
*.platform=linux/arm64,linux/amd64/v3
steam.tags=ghcr.io/${{ github.repository_owner }}/steam:${{ env.BRANCH_NAME }}
twitch-events:
runs-on: ubuntu-latest
environment: prod
permissions:
packages: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2

- name: Check for changes in twitch-events service
id: twitch-events-changes
run: |
git diff --name-only HEAD^ HEAD | grep -q "^packages/twitch-events/" && echo "changed=true" >> $GITHUB_OUTPUT || echo "changed=false" >> $GITHUB_OUTPUT
git diff --name-only HEAD^ HEAD | grep -q "^packages/Dockerfile.bun" && echo "dockerfile_changed=true" >> $GITHUB_OUTPUT || echo "dockerfile_changed=false" >> $GITHUB_OUTPUT
git diff --name-only HEAD^ HEAD | grep -q "^docker-compose.yml" && echo "compose_changed=true" >> $GITHUB_OUTPUT || echo "compose_changed=false" >> $GITHUB_OUTPUT
- name: Extract branch name
if: steps.twitch-events-changes.outputs.changed == 'true' || steps.twitch-events-changes.outputs.dockerfile_changed == 'true' || steps.twitch-events-changes.outputs.compose_changed == 'true'
shell: bash
run: echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV

- name: Set up Docker Buildx
if: steps.twitch-events-changes.outputs.changed == 'true' || steps.twitch-events-changes.outputs.dockerfile_changed == 'true' || steps.twitch-events-changes.outputs.compose_changed == 'true'
uses: docker/setup-buildx-action@v3

- name: Login to ghcr
if: steps.twitch-events-changes.outputs.changed == 'true' || steps.twitch-events-changes.outputs.dockerfile_changed == 'true' || steps.twitch-events-changes.outputs.compose_changed == 'true'
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GHA_PAT }}

- name: Build and push
if: steps.twitch-events-changes.outputs.changed == 'true' || steps.twitch-events-changes.outputs.dockerfile_changed == 'true' || steps.twitch-events-changes.outputs.compose_changed == 'true'
uses: docker/bake-action@v6
with:
push: true
provenance: false
targets: twitch-events
set: |
*.cache-from=type=gha
*.cache-to=type=gha,mode=max
*.platform=linux/arm64,linux/amd64/v3
twitch-events.tags=ghcr.io/${{ github.repository_owner }}/twitch-events:${{ env.BRANCH_NAME }}
8 changes: 8 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ services:
container_name: redis
image: "redis/redis-stack-server:latest"
restart: on-failure:5
volumes:
- redis_data:/data

twitch-chat:
container_name: twitch-chat
Expand Down Expand Up @@ -111,6 +113,11 @@ services:
container_name: dota
image: "ghcr.io/dotabod/dota:master"
restart: on-failure:5
depends_on:
- redis
- steam
- twitch-chat
- twitch-events
# random
build:
context: .
Expand Down Expand Up @@ -155,6 +162,7 @@ services:

volumes:
steam_auth:
redis_data:
networks:
default:
name: dotabod
16 changes: 16 additions & 0 deletions packages/dota/src/db/getDBUser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
} from '../dota/lib/consts.js'
import type { SocketClient } from '../types.js'
import { logger } from '../utils/logger.js'
import { isSubscriptionActive } from '../utils/subscription'
import supabase from './supabase.js'

export default async function getDBUser({
Expand Down Expand Up @@ -86,6 +87,11 @@ export default async function getDBUser({
stream_start_date,
beta_tester,
locale,
subscriptions (
id,
tier,
status
),
Account:accounts (
refresh_token,
scope,
Expand Down Expand Up @@ -148,13 +154,23 @@ export default async function getDBUser({
lookingupToken.delete(lookupToken)
return
}
let subscription = undefined
if (Array.isArray(user.subscriptions) && user.subscriptions.length > 0) {
const activeSubscription =
user.subscriptions.find((sub) => isSubscriptionActive({ status: sub.status })) ||
user.subscriptions[0]
subscription = {
...activeSubscription,
}
}

const userInfo = {
...user,
mmr: user.mmr || user.SteamAccount[0]?.mmr || 0,
steam32Id: user.steam32Id || user.SteamAccount[0]?.steam32Id || 0,
token: user.id,
stream_start_date: user.stream_start_date ? new Date(user.stream_start_date) : null,
subscription,
Account: {
...Account,
requires_refresh: Account.requires_refresh ?? false,
Expand Down
Loading

0 comments on commit 8d924ef

Please sign in to comment.