Skip to content
Merged
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
a595b16
feat(Query): Automatically use the first logical operation as the WHE…
LeandroLCD Nov 17, 2025
20e71ac
test(QueryDelete): Fix test for building without a WHERE clause
LeandroLCD Nov 17, 2025
6edf9d8
Update query/src/main/java/com/blipblipcode/query/QueryDelete.kt
LeandroLCD Nov 17, 2025
cd823c1
Update query/src/main/java/com/blipblipcode/query/QuerySelect.kt
LeandroLCD Nov 18, 2025
0ef87ec
feat(QuerySelect): Allow queries without a WHERE clause
LeandroLCD Nov 18, 2025
5899c58
Merge remote-tracking branch 'origin/master' into develop
LeandroLCD Nov 18, 2025
8cb9e02
Merge branch 'master' into develop
LeandroLCD Nov 18, 2025
5200a40
Merge remote-tracking branch 'origin/develop' into develop
LeandroLCD Nov 20, 2025
ac5b7fb
chore(deps): Update AGP to 8.13.1
LeandroLCD Nov 20, 2025
c0b92b6
docs(UnionQuery): Fix KDoc for orderBy parameter
LeandroLCD Nov 20, 2025
664d910
feat(Query): Add case-insensitive comparison support
LeandroLCD Nov 26, 2025
8bb0d5a
chore(deps): Update various dependencies
LeandroLCD Dec 8, 2025
c4c208f
chore(README): Update Kotlin version badge
LeandroLCD Dec 8, 2025
8b3be0d
refactor(Field): Implement SQLOperator for consistency
LeandroLCD Dec 8, 2025
8a9c3e0
feat(Queryable): Add filtered `asSql` method
LeandroLCD Dec 8, 2025
8f41579
feat(Queryable): Add predicate-based SQL generation and clear functio…
LeandroLCD Dec 8, 2025
4d6156b
refactor(SQLOperator): Standardize operator implementations
LeandroLCD Dec 8, 2025
e667492
feat(retrofit): Add RepeatedQueryParameters for Retrofit @QueryMap
LeandroLCD Dec 8, 2025
d797d6d
feat(Queryable): Add `asQueryRepeatedQueryParameters` extension
LeandroLCD Dec 8, 2025
a5d00b2
feat(QuerySelect): Include orderBy and limit in getSqlOperators
LeandroLCD Dec 8, 2025
ed4e44c
feat(Retrofit): Add `RepeatedQueryParameters` for Retrofit integration
LeandroLCD Dec 8, 2025
c1cd2e1
feat(Retrofit): Add `RepeatedQueryParameters` for Retrofit integration
LeandroLCD Dec 8, 2025
880424b
Merge branch 'master' into develop
LeandroLCD Dec 9, 2025
97bbc8b
docs(QuerySelect): Improve KDoc for getOrderBy function
LeandroLCD Dec 9, 2025
27c6476
Add Retrofit badge and update README links
LeandroLCD Dec 9, 2025
c7f40a6
fix(SQLOperator): Correctly quote values in `Between` operator
LeandroLCD Dec 10, 2025
39c0117
Merge branch 'master' into develop
LeandroLCD Dec 10, 2025
135aed3
chore(deps): Update AGP to 8.13.2
LeandroLCD Dec 26, 2025
2eac0b0
chore(UnionQuery): Remove unused imports
LeandroLCD Dec 26, 2025
b9a220e
Merge remote-tracking branch 'origin/develop' into develop
LeandroLCD Dec 26, 2025
3b6c776
refactor(Query): Standardize LogicalOperation with a sealed interface
LeandroLCD Jan 22, 2026
d778016
refactor(Query): Rename property 'type' to 'symbol' in LogicalOperati…
LeandroLCD Jan 22, 2026
5c3ab5c
Merge branch 'master' into develop
LeandroLCD Jan 22, 2026
c2a12dc
Merge branch 'master' into develop
LeandroLCD Jan 22, 2026
d1daaee
refactor(Query): Remove unused main function and transformOperation m…
LeandroLCD Jan 22, 2026
2b1c8d7
Merge remote-tracking branch 'origin/develop' into develop
LeandroLCD Jan 22, 2026
b5a24de
fix(QuerySelect): Reset limit and orderBy in clear method
LeandroLCD Feb 9, 2026
56ac9b8
feat(build.gradle.kts): Add Maven publishing configuration for releas…
LeandroLCD Feb 9, 2026
c61f619
chore(deps): Upgrade Gradle and Android Gradle Plugin
LeandroLCD Feb 12, 2026
97f48dc
feat(deps): Update kotlin and compose dependencies
LeandroLCD Feb 12, 2026
92713cd
feat(deps): Update AndroidX and Compose dependencies
LeandroLCD Mar 17, 2026
ccb0cb4
feat(query): Add getOperators and clearOrderBy methods
LeandroLCD Mar 17, 2026
ae210e1
feat(query): Add Collation support and transform capabilities to OrderBy
LeandroLCD Mar 24, 2026
dbc8dd3
feat(query): Add limit management and refine OrderBy behavior in Unio…
LeandroLCD May 27, 2026
a580f3e
feat(query): Add toQueryDelete method to QuerySelect
LeandroLCD May 27, 2026
41ba064
Merge branch 'master' into develop
LeandroLCD Jun 9, 2026
5ea199b
refactor(query): Enhance cloning, immutability, and testing standards
LeandroLCD Jun 9, 2026
8da4ef2
refactor(query): Remove unused imports in query-related files
LeandroLCD Jun 9, 2026
2c25bcc
refactor(query): Rename and fix cloning extension methods for `Logica…
LeandroLCD Jun 18, 2026
847b6f7
ci(release): Setup automated release pipeline and bump version to 0.13.3
LeandroLCD Jun 18, 2026
bb42ce2
build(ci): Upgrade GitHub Actions and optimize Gradle caching
LeandroLCD Jun 18, 2026
4c99575
build(ci): Upgrade GitHub Actions and optimize Gradle caching
LeandroLCD Jun 18, 2026
4478c50
ci(release): add Discord notification job to release pipeline
LeandroLCD Aug 14, 2026
d1a41e6
Merge branch 'master' into develop
LeandroLCD Aug 14, 2026
80e75be
ci(release): fix missing jq --arg branch in Discord notification payload
LeandroLCD Aug 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
151 changes: 150 additions & 1 deletion .github/workflows/release-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -580,4 +580,153 @@ jobs:
issue_number: context.issue.number,
body,
});
}
}

# ─────────────────────────────────────────────────────────────────────────
# DISCORD NOTIFICATION — Job independiente que reporta el resultado del
# pipeline. Corre siempre que el PR haya sido mergeado, incluso si algún
# job anterior falló o fue skipped. No afecta el status global del run.
# ─────────────────────────────────────────────────────────────────────────
notify-discord:
name: 📣 Notify Discord
runs-on: ubuntu-latest
needs: [check-tag, build-release, create-release, jitpack-build]
if: always() && github.event.pull_request.merged == true
timeout-minutes: 5
continue-on-error: true

steps:
- name: 📣 Send Discord notification
env:
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
R1: ${{ needs.check-tag.result }}
R2: ${{ needs.build-release.result }}
R3: ${{ needs.create-release.result }}
R4: ${{ needs.jitpack-build.result }}
BRANCH: ${{ github.ref_name }}
SHA: ${{ github.sha }}
AUTHOR: ${{ github.actor }}
EVENT: ${{ github.event_name }}
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
LIBRARY_NAME: ${{ github.repository }}
VERSION: ${{ needs.check-tag.outputs.version }}
TAG: ${{ needs.check-tag.outputs.tag_name }}
JITPACK_STATUS: ${{ needs.jitpack-build.outputs.jitpack_status }}
PR_NUMBER: ${{ github.event.pull_request.number }}
PR_TITLE: ${{ github.event.pull_request.title }}
run: |
# Status agregado del pipeline a partir de los resultados de cada job.
# Cualquier failure domina; si todos success → success; etc.
if [ "$R1" = "failure" ] || [ "$R2" = "failure" ] || [ "$R3" = "failure" ] || [ "$R4" = "failure" ]; then
STATUS="failure"
elif [ "$R1" = "cancelled" ] || [ "$R2" = "cancelled" ] || [ "$R3" = "cancelled" ] || [ "$R4" = "cancelled" ]; then
STATUS="cancelled"
elif [ "$R1" = "success" ] && [ "$R2" = "success" ] && [ "$R3" = "success" ] && [ "$R4" = "success" ]; then
STATUS="success"
else
STATUS="skipped"
fi

if [ -z "$DISCORD_WEBHOOK_URL" ]; then
echo "⚠️ DISCORD_WEBHOOK_URL no configurado — saltando notificación"
{
echo "## 📣 Discord notification skipped"
echo "DISCORD_WEBHOOK_URL secret no configurado en este repo."
} >> "$GITHUB_STEP_SUMMARY"
exit 0
fi

case "$STATUS" in
success) EMOJI="✅"; COLOR=3066993 ;;
failure) EMOJI="❌"; COLOR=15158332 ;;
cancelled) EMOJI="⚪"; COLOR=9807270 ;;
*) EMOJI="ℹ️"; COLOR=3447003 ;;
esac

SHORT_SHA="${SHA:0:7}"
# Nombre de la librería = último segmento del repo (ej: "compose-components")
LIBRARY_NAME="${LIBRARY_NAME##*/}"
VERSION_DISPLAY="${VERSION:-N/A}"
TAG_DISPLAY="${TAG:-N/A}"
# Título del embed: "<library> — new release <version>"
if [ -n "$VERSION" ] && [ "$VERSION_DISPLAY" != "N/A" ]; then
EMBED_TITLE="${EMOJI} ${LIBRARY_NAME} — new release ${VERSION_DISPLAY}"
else
EMBED_TITLE="${EMOJI} ${LIBRARY_NAME} — release pipeline"
fi
# Link al release del tag (donde queda adjunto el AAR).
# Se construye desde RUN_URL para no depender de que create-release haya corrido bien.
if [ -n "$TAG" ]; then
TAG_URL="${RUN_URL%/*}/releases/tag/${TAG}"
ARTIFACT_LINK="[${TAG}](${TAG_URL})"
else
ARTIFACT_LINK="—"
fi
JITPACK_DISPLAY="${JITPACK_STATUS:-skipped}"

# PR info (solo si el evento fue un PR)
PR_FIELDS='[]'
if [ -n "${PR_NUMBER:-}" ]; then
PR_FIELDS=$(jq -nc \
--arg title "${PR_TITLE:-}" \
--arg num "$PR_NUMBER" \
--arg url "${RUN_URL%/*}/pull/${PR_NUMBER}" \
'[{name: "Pull Request", value: ("[PR #" + $num + ": " + $title + "](" + $url + ")"), inline: false}]')
fi

# Payload construido con jq para evitar problemas de quoting
PAYLOAD=$(jq -nc \
--arg username "GitHub Actions" \
--arg avatar "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png" \
--arg title "$EMBED_TITLE" \
--arg run_url "$RUN_URL" \
--argjson color "$COLOR" \
--arg status "$STATUS" \
--arg short_sha "$SHORT_SHA" \
--arg author "$AUTHOR" \
--arg event "$EVENT" \
--arg branch "$BRANCH" \
--arg version "$VERSION_DISPLAY" \
--arg tag "$TAG_DISPLAY" \
--arg release_link "$ARTIFACT_LINK" \
--arg jitpack "$JITPACK_DISPLAY" \
--arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
--argjson pr_fields "$PR_FIELDS" \
'{
username: $username,
avatar_url: $avatar,
embeds: [{
title: $title,
url: $run_url,
color: $color,
fields: (
[
{name: "Estado", value: $status, inline: true},
{name: "Branch", value: $branch, inline: true},
{name: "Commit", value: ("`" + $short_sha + "`"), inline: true},
{name: "Autor", value: $author, inline: true},
{name: "Evento", value: $event, inline: true},
{name: "Versión", value: $version, inline: true},
{name: "Tag", value: $tag, inline: true},
{name: "Artifact", value: $release_link, inline: false},
{name: "JitPack", value: $jitpack, inline: true}
] + $pr_fields
),
timestamp: $ts
}]
}')

HTTP_CODE=$(curl --fail -sS -o /dev/null -w "%{http_code}" -X POST \
-H "Content-Type: application/json" \
--data "$PAYLOAD" "$DISCORD_WEBHOOK_URL" 2>/dev/null || echo "000")
if [ "$HTTP_CODE" = "000" ] || [ "$HTTP_CODE" -ge 400 ] 2>/dev/null; then
echo "⚠️ Discord notification FAILED (HTTP $HTTP_CODE). Webhook puede estar eliminado, sin permisos, o Discord caído."
{
echo "## 📣 Discord notification FAILED"
echo "- HTTP code: \`$HTTP_CODE\`"
echo "- Pipeline status: \`$STATUS\`"
echo "- [Abrir run](${RUN_URL})"
} >> "$GITHUB_STEP_SUMMARY"
exit 0
fi
echo "📣 Notificación enviada a Discord (HTTP $HTTP_CODE) — pipeline: ${STATUS}"
Loading