56 Commits

Author SHA1 Message Date
ealmeida 83464df908 chore: remove old schema path 20.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 41s
2026-04-24 18:57:07 +00:00
ealmeida bc76cfcd49 chore: remove old schema path 19.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 36s
2026-04-24 18:57:03 +00:00
ealmeida 9078fe89de chore: remove old schema path 18.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 42s
2026-04-24 18:56:58 +00:00
ealmeida 3eb36a9006 chore: remove old schema path 17.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 23s
2026-04-24 18:56:53 +00:00
ealmeida 2a00670bbb chore: remove old schema path 16.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 31s
2026-04-24 18:56:48 +00:00
ealmeida 7c5ad0a4c9 chore: remove old schema path 15.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 43s
2026-04-24 18:56:43 +00:00
ealmeida 209a9a9ba1 chore: remove old schema path 14.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 31s
2026-04-24 18:56:38 +00:00
ealmeida d04f04716c chore: remove old schema path 13.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 37s
2026-04-24 18:56:33 +00:00
ealmeida 143a67e47b chore: remove old schema path 12.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 39s
2026-04-24 18:56:29 +00:00
ealmeida 125bd31264 chore: remove old schema path 11.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 32s
2026-04-24 18:55:50 +00:00
ealmeida 116c4c6377 chore: remove old schema path 10.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 43s
2026-04-24 18:55:45 +00:00
ealmeida d5f910763f chore: remove old schema path 9.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 29s
2026-04-24 18:55:40 +00:00
ealmeida f79996995e chore: remove old schema path 8.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 43s
2026-04-24 18:55:34 +00:00
ealmeida 5b53b61416 chore: remove old schema path 7.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 37s
2026-04-24 18:55:31 +00:00
ealmeida 2c7f515e3b chore: remove old schema path 6.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 3m18s
2026-04-24 18:55:26 +00:00
ealmeida 97cfafd47e chore: remove old schema path 5.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 6m8s
2026-04-24 18:55:22 +00:00
ealmeida 044f08bcd0 chore: remove old schema path 4.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 7m18s
2026-04-24 18:55:18 +00:00
ealmeida d2b23833a3 chore: remove old schema path 3.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 7m19s
2026-04-24 18:55:13 +00:00
ealmeida f200c2c0d0 chore: remove old schema path 2.json (package rename)
Build AAB — WhatSMS Gateway / build (push) Failing after 5m44s
2026-04-24 18:55:09 +00:00
ealmeida db740e4aaa fix(room-schema): remove old package path schemas (cleanup me.capcom.smsgateway) 1/20
Build AAB — WhatSMS Gateway / build (push) Failing after 5m13s
2026-04-24 18:53:53 +00:00
ealmeida 74ac47f497 fix(room-schema): add schema 20 at new package path pt.whatsms.gateway
Build AAB — WhatSMS Gateway / build (push) Failing after 4m50s
2026-04-24 18:53:06 +00:00
ealmeida 03d5e86006 fix(room-schema): add schema 19 at new package path pt.whatsms.gateway
Build AAB — WhatSMS Gateway / build (push) Failing after 5m3s
2026-04-24 18:47:40 +00:00
ealmeida 9e352e366e fix: add Room schema 18 to new package path pt.whatsms.gateway
Build AAB — WhatSMS Gateway / build (push) Failing after 5m15s
2026-04-24 18:43:00 +00:00
ealmeida 0e8161f2fa fix: add Room schema 17 to new package path pt.whatsms.gateway
Build AAB — WhatSMS Gateway / build (push) Failing after 5m2s
2026-04-24 18:40:26 +00:00
ealmeida a2add4112e fix(room): add schema 16 to pt.whatsms.gateway path
Build AAB — WhatSMS Gateway / build (push) Failing after 3m38s
2026-04-24 18:34:59 +00:00
ealmeida 92d07fb47f fix(room): add schema 15 to pt.whatsms.gateway path
Build AAB — WhatSMS Gateway / build (push) Failing after 3m47s
2026-04-24 18:32:53 +00:00
ealmeida 7ac4df014c fix(schemas): copiar schema v14 para path pt.whatsms.gateway
Build AAB — WhatSMS Gateway / build (push) Failing after 2m29s
2026-04-24 18:27:48 +00:00
ealmeida 91848e5fea fix(schemas): copiar schema v13 para path pt.whatsms.gateway
Build AAB — WhatSMS Gateway / build (push) Failing after 2m26s
2026-04-24 18:25:45 +00:00
ealmeida 26e8129408 chore: migrate Room schema 12 to pt.whatsms.gateway package path
Build AAB — WhatSMS Gateway / build (push) Failing after 3m44s
2026-04-24 18:20:12 +00:00
ealmeida a6ac97962e chore: migrate Room schema 11 to pt.whatsms.gateway package path
Build AAB — WhatSMS Gateway / build (push) Failing after 3m48s
2026-04-24 18:18:16 +00:00
ealmeida d385d1c39c chore: migrate Room schema to pt.whatsms.gateway package path (10.json)
Build AAB — WhatSMS Gateway / build (push) Failing after 5m52s
2026-04-24 18:14:58 +00:00
ealmeida 1d58d24006 chore: migrate Room schema to pt.whatsms.gateway package path (9.json)
Build AAB — WhatSMS Gateway / build (push) Failing after 5m52s
2026-04-24 18:13:31 +00:00
ealmeida 5c8c1b2e77 chore: migrate Room schema to pt.whatsms.gateway package path (8.json)
Build AAB — WhatSMS Gateway / build (push) Failing after 5m51s
2026-04-24 18:12:30 +00:00
ealmeida 21897c2be6 chore: migrate Room schema to pt.whatsms.gateway package path (7.json)
Build AAB — WhatSMS Gateway / build (push) Failing after 3m35s
2026-04-24 18:11:56 +00:00
ealmeida f0224be20b chore: migrate Room schema to pt.whatsms.gateway package path (6.json)
Build AAB — WhatSMS Gateway / build (push) Failing after 3m48s
2026-04-24 18:11:05 +00:00
ealmeida 9c7e37e6c7 fix: migrar schemas Room para novo package pt.whatsms.gateway (schema 5)
Build AAB — WhatSMS Gateway / build (push) Failing after 3m59s
2026-04-24 18:08:24 +00:00
ealmeida d23b64e5dd fix: migrar schemas Room para novo package pt.whatsms.gateway (schema 4)
Build AAB — WhatSMS Gateway / build (push) Failing after 4m25s
2026-04-24 18:07:43 +00:00
ealmeida daa3348ccf fix: migrar schemas Room para novo package pt.whatsms.gateway (schema 3)
Build AAB — WhatSMS Gateway / build (push) Failing after 27s
2026-04-24 18:07:08 +00:00
ealmeida 17682811ac fix: migrar schemas Room para novo package pt.whatsms.gateway (schema 2)
Build AAB — WhatSMS Gateway / build (push) Failing after 35s
2026-04-24 18:06:35 +00:00
ealmeida a67505217c fix: migrar schemas Room para novo package pt.whatsms.gateway (1-5)
Build AAB — WhatSMS Gateway / build (push) Failing after 35s
2026-04-24 18:05:49 +00:00
ealmeida 11185406d9 fix: substituir URLs sms-gate.app/capcom6 em strings.xml por whatsms.pt
Build AAB — WhatSMS Gateway / build (push) Failing after 2m46s
2026-04-24 17:36:11 +00:00
ealmeida 7737b9d6df fix: remover URLs sms-gate.app residuais de GatewaySettings
Build AAB — WhatSMS Gateway / build (push) Failing after 36s
2026-04-24 17:35:30 +00:00
ealmeida 5c5b35f9e2 refactor: renomear package me.capcom.smsgateway → pt.whatsms.gateway
Build AAB — WhatSMS Gateway / build (push) Failing after 34s
- namespace, applicationId, todos os ficheiros .kt/.xml/.gradle actualizados
- directório me/capcom/smsgateway/ → pt/whatsms/gateway/
- zero referências a capcom no código fonte
2026-04-24 18:28:08 +01:00
ealmeida 1cb31d1615 ci: substituir upload-artifact por release Gitea (fix ECONNREFUSED 127.0.1.1:443)
Build AAB — WhatSMS Gateway / build (push) Successful in 4m33s
2026-04-24 16:57:29 +00:00
ealmeida fa6f7e0a21 fix: descodificar root_preferences.xml (estava double-base64 encoded)
Build AAB — WhatSMS Gateway / build (push) Failing after 7m10s
2026-04-24 16:49:01 +00:00
ealmeida 391ba14ce8 ci: fix workflow YAML (era base64 literal) + --network host para checkout funcionar
Build AAB — WhatSMS Gateway / build (push) Failing after 1m20s
2026-04-24 16:42:37 +00:00
ealmeida 1d6084148e ci: fix checkout — add --network host to container (Gitea HTTPS not reachable from isolated Docker network) 2026-04-24 16:41:17 +00:00
ealmeida 88bc875055 ci: assembleRelease → bundleRelease (AAB obrigatório Play Store)
Build AAB — WhatSMS Gateway / build (push) Failing after 59s
2026-04-24 16:36:34 +00:00
ealmeida f780311b3e build: targetSdk + compileSdk 33 → 34 (Play Store requirement)
Build APK — WhatSMS Gateway / build (push) Failing after 1m2s
2026-04-24 16:36:29 +00:00
ealmeida 98db49ca24 ci: Gitea Actions workflow para build APK release v3.2.0
Build APK — WhatSMS Gateway / build (push) Failing after 4m5s
- Runner: mingc/android-build-box:latest (JDK 17)
- Injecta google-services.json a partir de secret
- Decode keystore.jks a partir de KEYSTORE_BASE64
- assembleRelease com signing via env vars
- Upload APK como artefacto da run
- Trigger: push feat/whatsms-branding-ptpt + workflow_dispatch
2026-04-24 16:30:53 +00:00
ealmeida 63e6936f9b build: upgrade Gradle wrapper 8.0 → 8.7 (suporte Java 21)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 01:41:57 +01:00
ealmeida a3285cc4a2 feat(android): QR pairing — ZXing scanner + ScanPairingActivity + strings PT-PT
- Adiciona dependência zxing-android-embedded:4.3.0
- Adiciona permissão CAMERA e regista ScanPairingActivity no Manifest
- Cria ScanPairingActivity: scan QR → parse JSON → POST claim-device
- Adiciona preferência "Emparelhar dispositivo" nas definições do servidor
- Adiciona handler de clique em WhatSmsServerSettingsFragment
- Strings PT-PT: scan_qr_to_pair, pairing_success/failed/cancelled/error
- Bump versionName para 3.2.0

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-23 00:55:46 +01:00
ealmeida 05efaf185c feat(android-ui): add PT-PT strings for WhatSMS Server settings panel 2026-04-22 23:05:14 +00:00
ealmeida 0f67dfd686 feat(android-ui): simplify settings to 2 panels (WhatSMS Server + Mensagens) 2026-04-22 23:01:37 +00:00
ealmeida a4a65f4214 feat(android-ui): add WhatSmsServerSettingsFragment (merged Local+Cloud) 2026-04-22 23:00:41 +00:00
ealmeida abaaedbf30 feat(android-ui): add whatsms_server_preferences.xml (simplified cloud panel) 2026-04-22 22:59:10 +00:00
257 changed files with 1218 additions and 6667 deletions
+70
View File
@@ -0,0 +1,70 @@
name: Build AAB — WhatSMS Gateway
on:
push:
branches:
- feat/whatsms-branding-ptpt
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
container:
image: mingc/android-build-box:latest
options: --network host
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Configurar JDK 17
run: |
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
echo "JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" >> $GITHUB_ENV
echo "/usr/lib/jvm/java-17-openjdk-amd64/bin" >> $GITHUB_PATH
java -version
- name: Injectar google-services.json
run: echo '${{ secrets.GOOGLE_SERVICES_JSON }}' > app/google-services.json
- name: Decode keystore
run: echo '${{ secrets.KEYSTORE_BASE64 }}' | base64 -d > app/keystore.jks
- name: Build AAB release
env:
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
run: |
chmod +x gradlew
./gradlew bundleRelease --no-daemon --stacktrace
- name: Publicar AAB como release Gitea
env:
GITEA_TOKEN: ${{ github.token }}
run: |
AAB=$(find app/build/outputs/bundle/release -name "*.aab" | head -1)
echo "AAB encontrado: $AAB"
# Criar release (ignora erro se tag ja existir)
RESP=$(curl -s -X POST \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
https://git.descomplicar.pt/api/v1/repos/ealmeida/whatsms-gateway-android/releases \
-d '{"tag_name":"v3.2.0-ci","name":"WhatSMS Gateway v3.2.0 CI","body":"Build automatico Gitea Actions","draft":false,"prerelease":true}')
RELEASE_ID=$(echo "$RESP" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
# Se release ja existe, obter ID por tag
if [ -z "$RELEASE_ID" ] || [ "$RELEASE_ID" = "null" ]; then
RELEASE_ID=$(curl -s \
-H "Authorization: token $GITEA_TOKEN" \
https://git.descomplicar.pt/api/v1/repos/ealmeida/whatsms-gateway-android/releases/tags/v3.2.0-ci \
| grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
fi
echo "Release ID: $RELEASE_ID"
# Upload AAB como asset da release
curl -s -X POST \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/octet-stream" \
--data-binary "@$AAB" \
"https://git.descomplicar.pt/api/v1/repos/ealmeida/whatsms-gateway-android/releases/${RELEASE_ID}/assets?name=whatsms-gateway-v3.2.0.aab"
echo "Upload concluido!"
+7 -4
View File
@@ -6,14 +6,14 @@ plugins {
} }
android { android {
compileSdk 33 compileSdk 34
defaultConfig { defaultConfig {
applicationId "pt.whatsms.gateway" applicationId "pt.whatsms.gateway"
minSdk 21 minSdk 21
targetSdk 33 targetSdk 34
versionCode 11 versionCode 11
versionName "3.1.0-hardcode" versionName "3.2.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -68,7 +68,7 @@ android {
exclude 'META-INF/INDEX.LIST' exclude 'META-INF/INDEX.LIST'
exclude 'META-INF/io.netty.versions.properties' exclude 'META-INF/io.netty.versions.properties'
} }
namespace 'me.capcom.smsgateway' namespace 'pt.whatsms.gateway'
} }
dependencies { dependencies {
@@ -130,6 +130,9 @@ dependencies {
// Koin for Android // Koin for Android
implementation "io.insert-koin:koin-android:$koin_version" implementation "io.insert-koin:koin-android:$koin_version"
// QR code scanner para emparelhamento WhatSMS
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
testImplementation("junit:junit:4.13.2") testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.3") androidTestImplementation("androidx.test.ext:junit:1.1.3")
androidTestImplementation("androidx.test.espresso:espresso-core:3.4.0") androidTestImplementation("androidx.test.espresso:espresso-core:3.4.0")
+1 -1
View File
@@ -4,7 +4,7 @@
"type": "APK", "type": "APK",
"kind": "Directory" "kind": "Directory"
}, },
"applicationId": "me.capcom.smsgateway", "applicationId": "pt.whatsms.gateway",
"variantName": "release", "variantName": "release",
"elements": [ "elements": [
{ {
@@ -1,91 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 1,
"identityHash": "67fe481b485f4d2705ab746884ad69b1",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `text` TEXT NOT NULL, `state` TEXT NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "text",
"columnName": "text",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '67fe481b485f4d2705ab746884ad69b1')"
]
}
}
@@ -1,268 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 10,
"identityHash": "76eadaecfb0d5b84f7038edff0d0a1cf",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `text` TEXT NOT NULL, `withDeliveryReport` INTEGER NOT NULL DEFAULT 1, `simNumber` INTEGER, `validUntil` TEXT, `isEncrypted` INTEGER NOT NULL DEFAULT 0, `skipPhoneValidation` INTEGER NOT NULL DEFAULT 0, `source` TEXT NOT NULL DEFAULT 'Local', `state` TEXT NOT NULL, `createdAt` INTEGER NOT NULL DEFAULT 0, `processedAt` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "text",
"columnName": "text",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "withDeliveryReport",
"columnName": "withDeliveryReport",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "1"
},
{
"fieldPath": "simNumber",
"columnName": "simNumber",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "validUntil",
"columnName": "validUntil",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "isEncrypted",
"columnName": "isEncrypted",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "skipPhoneValidation",
"columnName": "skipPhoneValidation",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "processedAt",
"columnName": "processedAt",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_Message_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
},
{
"name": "index_Message_processedAt",
"unique": false,
"columnNames": [
"processedAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_processedAt` ON `${TABLE_NAME}` (`processedAt`)"
}
],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `error` TEXT, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "RecipientState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `phoneNumber`, `state`), FOREIGN KEY(`messageId`, `phoneNumber`) REFERENCES `MessageRecipient`(`messageId`, `phoneNumber`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "MessageRecipient",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId",
"phoneNumber"
],
"referencedColumns": [
"messageId",
"phoneNumber"
]
}
]
},
{
"tableName": "MessageState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `state`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '76eadaecfb0d5b84f7038edff0d0a1cf')"
]
}
}
@@ -1,306 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 11,
"identityHash": "8d650175dcd787e41529e8a5c6327311",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `text` TEXT NOT NULL, `withDeliveryReport` INTEGER NOT NULL DEFAULT 1, `simNumber` INTEGER, `validUntil` TEXT, `isEncrypted` INTEGER NOT NULL DEFAULT 0, `skipPhoneValidation` INTEGER NOT NULL DEFAULT 0, `source` TEXT NOT NULL DEFAULT 'Local', `state` TEXT NOT NULL, `createdAt` INTEGER NOT NULL DEFAULT 0, `processedAt` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "text",
"columnName": "text",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "withDeliveryReport",
"columnName": "withDeliveryReport",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "1"
},
{
"fieldPath": "simNumber",
"columnName": "simNumber",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "validUntil",
"columnName": "validUntil",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "isEncrypted",
"columnName": "isEncrypted",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "skipPhoneValidation",
"columnName": "skipPhoneValidation",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "processedAt",
"columnName": "processedAt",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_Message_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
},
{
"name": "index_Message_processedAt",
"unique": false,
"columnNames": [
"processedAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_processedAt` ON `${TABLE_NAME}` (`processedAt`)"
}
],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `error` TEXT, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "RecipientState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `phoneNumber`, `state`), FOREIGN KEY(`messageId`, `phoneNumber`) REFERENCES `MessageRecipient`(`messageId`, `phoneNumber`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "MessageRecipient",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId",
"phoneNumber"
],
"referencedColumns": [
"messageId",
"phoneNumber"
]
}
]
},
{
"tableName": "MessageState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `state`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "WebHook",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `url` TEXT NOT NULL, `event` TEXT NOT NULL, `source` TEXT NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "url",
"columnName": "url",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "event",
"columnName": "event",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '8d650175dcd787e41529e8a5c6327311')"
]
}
}
@@ -1,366 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 12,
"identityHash": "0bb7c2a525bfb354699c9acfec6fb7a1",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `text` TEXT NOT NULL, `withDeliveryReport` INTEGER NOT NULL DEFAULT 1, `simNumber` INTEGER, `validUntil` TEXT, `isEncrypted` INTEGER NOT NULL DEFAULT 0, `skipPhoneValidation` INTEGER NOT NULL DEFAULT 0, `source` TEXT NOT NULL DEFAULT 'Local', `state` TEXT NOT NULL, `createdAt` INTEGER NOT NULL DEFAULT 0, `processedAt` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "text",
"columnName": "text",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "withDeliveryReport",
"columnName": "withDeliveryReport",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "1"
},
{
"fieldPath": "simNumber",
"columnName": "simNumber",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "validUntil",
"columnName": "validUntil",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "isEncrypted",
"columnName": "isEncrypted",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "skipPhoneValidation",
"columnName": "skipPhoneValidation",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "processedAt",
"columnName": "processedAt",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_Message_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
},
{
"name": "index_Message_processedAt",
"unique": false,
"columnNames": [
"processedAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_processedAt` ON `${TABLE_NAME}` (`processedAt`)"
}
],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `error` TEXT, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "RecipientState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `phoneNumber`, `state`), FOREIGN KEY(`messageId`, `phoneNumber`) REFERENCES `MessageRecipient`(`messageId`, `phoneNumber`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "MessageRecipient",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId",
"phoneNumber"
],
"referencedColumns": [
"messageId",
"phoneNumber"
]
}
]
},
{
"tableName": "MessageState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `state`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "WebHook",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `url` TEXT NOT NULL, `event` TEXT NOT NULL, `source` TEXT NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "url",
"columnName": "url",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "event",
"columnName": "event",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "logs_entries",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`priority` TEXT NOT NULL, `module` TEXT NOT NULL, `message` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `context` TEXT, `createdAt` INTEGER NOT NULL)",
"fields": [
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "module",
"columnName": "module",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "message",
"columnName": "message",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "context",
"columnName": "context",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_logs_entries_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_logs_entries_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
}
],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '0bb7c2a525bfb354699c9acfec6fb7a1')"
]
}
}
@@ -1,382 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 13,
"identityHash": "1ef93309ad8e6da02819b46ed75fc050",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `text` TEXT NOT NULL, `withDeliveryReport` INTEGER NOT NULL DEFAULT 1, `simNumber` INTEGER, `validUntil` TEXT, `isEncrypted` INTEGER NOT NULL DEFAULT 0, `skipPhoneValidation` INTEGER NOT NULL DEFAULT 0, `source` TEXT NOT NULL DEFAULT 'Local', `priority` INTEGER NOT NULL DEFAULT 0, `state` TEXT NOT NULL, `createdAt` INTEGER NOT NULL DEFAULT 0, `processedAt` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "text",
"columnName": "text",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "withDeliveryReport",
"columnName": "withDeliveryReport",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "1"
},
{
"fieldPath": "simNumber",
"columnName": "simNumber",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "validUntil",
"columnName": "validUntil",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "isEncrypted",
"columnName": "isEncrypted",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "skipPhoneValidation",
"columnName": "skipPhoneValidation",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "processedAt",
"columnName": "processedAt",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_Message_state",
"unique": false,
"columnNames": [
"state"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_state` ON `${TABLE_NAME}` (`state`)"
},
{
"name": "index_Message_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
},
{
"name": "index_Message_processedAt",
"unique": false,
"columnNames": [
"processedAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_processedAt` ON `${TABLE_NAME}` (`processedAt`)"
}
],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `error` TEXT, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "RecipientState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `phoneNumber`, `state`), FOREIGN KEY(`messageId`, `phoneNumber`) REFERENCES `MessageRecipient`(`messageId`, `phoneNumber`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "MessageRecipient",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId",
"phoneNumber"
],
"referencedColumns": [
"messageId",
"phoneNumber"
]
}
]
},
{
"tableName": "MessageState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `state`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "WebHook",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `url` TEXT NOT NULL, `event` TEXT NOT NULL, `source` TEXT NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "url",
"columnName": "url",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "event",
"columnName": "event",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "logs_entries",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`priority` TEXT NOT NULL, `module` TEXT NOT NULL, `message` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `context` TEXT, `createdAt` INTEGER NOT NULL)",
"fields": [
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "module",
"columnName": "module",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "message",
"columnName": "message",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "context",
"columnName": "context",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_logs_entries_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_logs_entries_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
}
],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '1ef93309ad8e6da02819b46ed75fc050')"
]
}
}
@@ -1,389 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 14,
"identityHash": "b6d02f75a658aca5ece43d2a914dba57",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `withDeliveryReport` INTEGER NOT NULL DEFAULT 1, `simNumber` INTEGER, `validUntil` TEXT, `isEncrypted` INTEGER NOT NULL DEFAULT 0, `skipPhoneValidation` INTEGER NOT NULL DEFAULT 0, `priority` INTEGER NOT NULL DEFAULT 0, `source` TEXT NOT NULL DEFAULT 'Local', `type` TEXT NOT NULL DEFAULT 'Text', `content` TEXT NOT NULL, `state` TEXT NOT NULL, `createdAt` INTEGER NOT NULL DEFAULT 0, `processedAt` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "withDeliveryReport",
"columnName": "withDeliveryReport",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "1"
},
{
"fieldPath": "simNumber",
"columnName": "simNumber",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "validUntil",
"columnName": "validUntil",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "isEncrypted",
"columnName": "isEncrypted",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "skipPhoneValidation",
"columnName": "skipPhoneValidation",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "type",
"columnName": "type",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Text'"
},
{
"fieldPath": "content",
"columnName": "content",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "processedAt",
"columnName": "processedAt",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_Message_state",
"unique": false,
"columnNames": [
"state"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_state` ON `${TABLE_NAME}` (`state`)"
},
{
"name": "index_Message_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
},
{
"name": "index_Message_processedAt",
"unique": false,
"columnNames": [
"processedAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_processedAt` ON `${TABLE_NAME}` (`processedAt`)"
}
],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `error` TEXT, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "RecipientState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `phoneNumber`, `state`), FOREIGN KEY(`messageId`, `phoneNumber`) REFERENCES `MessageRecipient`(`messageId`, `phoneNumber`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "MessageRecipient",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId",
"phoneNumber"
],
"referencedColumns": [
"messageId",
"phoneNumber"
]
}
]
},
{
"tableName": "MessageState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `state`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "WebHook",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `url` TEXT NOT NULL, `event` TEXT NOT NULL, `source` TEXT NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "url",
"columnName": "url",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "event",
"columnName": "event",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "logs_entries",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`priority` TEXT NOT NULL, `module` TEXT NOT NULL, `message` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `context` TEXT, `createdAt` INTEGER NOT NULL)",
"fields": [
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "module",
"columnName": "module",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "message",
"columnName": "message",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "context",
"columnName": "context",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_logs_entries_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_logs_entries_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
}
],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'b6d02f75a658aca5ece43d2a914dba57')"
]
}
}
@@ -1,391 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 15,
"identityHash": "e94488261a9a62360b4540f737805373",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `withDeliveryReport` INTEGER NOT NULL DEFAULT 1, `simNumber` INTEGER, `validUntil` TEXT, `isEncrypted` INTEGER NOT NULL DEFAULT 0, `skipPhoneValidation` INTEGER NOT NULL DEFAULT 0, `priority` INTEGER NOT NULL DEFAULT 0, `source` TEXT NOT NULL DEFAULT 'Local', `type` TEXT NOT NULL DEFAULT 'Text', `content` TEXT NOT NULL, `state` TEXT NOT NULL, `createdAt` INTEGER NOT NULL DEFAULT 0, `processedAt` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "withDeliveryReport",
"columnName": "withDeliveryReport",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "1"
},
{
"fieldPath": "simNumber",
"columnName": "simNumber",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "validUntil",
"columnName": "validUntil",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "isEncrypted",
"columnName": "isEncrypted",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "skipPhoneValidation",
"columnName": "skipPhoneValidation",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "type",
"columnName": "type",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Text'"
},
{
"fieldPath": "content",
"columnName": "content",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "processedAt",
"columnName": "processedAt",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_Message_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
},
{
"name": "index_Message_state_processedAt",
"unique": false,
"columnNames": [
"state",
"processedAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_state_processedAt` ON `${TABLE_NAME}` (`state`, `processedAt`)"
},
{
"name": "index_Message_state_createdAt",
"unique": false,
"columnNames": [
"state",
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_state_createdAt` ON `${TABLE_NAME}` (`state`, `createdAt`)"
}
],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `error` TEXT, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "RecipientState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `phoneNumber`, `state`), FOREIGN KEY(`messageId`, `phoneNumber`) REFERENCES `MessageRecipient`(`messageId`, `phoneNumber`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "MessageRecipient",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId",
"phoneNumber"
],
"referencedColumns": [
"messageId",
"phoneNumber"
]
}
]
},
{
"tableName": "MessageState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `state`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "WebHook",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `url` TEXT NOT NULL, `event` TEXT NOT NULL, `source` TEXT NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "url",
"columnName": "url",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "event",
"columnName": "event",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "logs_entries",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`priority` TEXT NOT NULL, `module` TEXT NOT NULL, `message` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `context` TEXT, `createdAt` INTEGER NOT NULL)",
"fields": [
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "module",
"columnName": "module",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "message",
"columnName": "message",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "context",
"columnName": "context",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_logs_entries_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_logs_entries_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
}
],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'e94488261a9a62360b4540f737805373')"
]
}
}
@@ -1,397 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 16,
"identityHash": "c9bca869f0cb40b9f25fbc44308fe786",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `withDeliveryReport` INTEGER NOT NULL DEFAULT 1, `simNumber` INTEGER, `validUntil` TEXT, `isEncrypted` INTEGER NOT NULL DEFAULT 0, `skipPhoneValidation` INTEGER NOT NULL DEFAULT 0, `priority` INTEGER NOT NULL DEFAULT 0, `source` TEXT NOT NULL DEFAULT 'Local', `type` TEXT NOT NULL DEFAULT 'Text', `content` TEXT NOT NULL, `state` TEXT NOT NULL, `partsCount` INTEGER, `createdAt` INTEGER NOT NULL DEFAULT 0, `processedAt` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "withDeliveryReport",
"columnName": "withDeliveryReport",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "1"
},
{
"fieldPath": "simNumber",
"columnName": "simNumber",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "validUntil",
"columnName": "validUntil",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "isEncrypted",
"columnName": "isEncrypted",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "skipPhoneValidation",
"columnName": "skipPhoneValidation",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "type",
"columnName": "type",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Text'"
},
{
"fieldPath": "content",
"columnName": "content",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "partsCount",
"columnName": "partsCount",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "processedAt",
"columnName": "processedAt",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_Message_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
},
{
"name": "index_Message_state_processedAt",
"unique": false,
"columnNames": [
"state",
"processedAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_state_processedAt` ON `${TABLE_NAME}` (`state`, `processedAt`)"
},
{
"name": "index_Message_state_createdAt",
"unique": false,
"columnNames": [
"state",
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_state_createdAt` ON `${TABLE_NAME}` (`state`, `createdAt`)"
}
],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `error` TEXT, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "RecipientState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `phoneNumber`, `state`), FOREIGN KEY(`messageId`, `phoneNumber`) REFERENCES `MessageRecipient`(`messageId`, `phoneNumber`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "MessageRecipient",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId",
"phoneNumber"
],
"referencedColumns": [
"messageId",
"phoneNumber"
]
}
]
},
{
"tableName": "MessageState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `state`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "WebHook",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `url` TEXT NOT NULL, `event` TEXT NOT NULL, `source` TEXT NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "url",
"columnName": "url",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "event",
"columnName": "event",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "logs_entries",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`priority` TEXT NOT NULL, `module` TEXT NOT NULL, `message` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `context` TEXT, `createdAt` INTEGER NOT NULL)",
"fields": [
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "module",
"columnName": "module",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "message",
"columnName": "message",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "context",
"columnName": "context",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_logs_entries_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_logs_entries_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
}
],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'c9bca869f0cb40b9f25fbc44308fe786')"
]
}
}
@@ -1,482 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 17,
"identityHash": "e647a679fe74540d36be13c53eadc9cb",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `withDeliveryReport` INTEGER NOT NULL DEFAULT 1, `simNumber` INTEGER, `validUntil` TEXT, `isEncrypted` INTEGER NOT NULL DEFAULT 0, `skipPhoneValidation` INTEGER NOT NULL DEFAULT 0, `priority` INTEGER NOT NULL DEFAULT 0, `source` TEXT NOT NULL DEFAULT 'Local', `type` TEXT NOT NULL DEFAULT 'Text', `content` TEXT NOT NULL, `state` TEXT NOT NULL, `partsCount` INTEGER, `createdAt` INTEGER NOT NULL DEFAULT 0, `processedAt` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "withDeliveryReport",
"columnName": "withDeliveryReport",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "1"
},
{
"fieldPath": "simNumber",
"columnName": "simNumber",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "validUntil",
"columnName": "validUntil",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "isEncrypted",
"columnName": "isEncrypted",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "skipPhoneValidation",
"columnName": "skipPhoneValidation",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "type",
"columnName": "type",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Text'"
},
{
"fieldPath": "content",
"columnName": "content",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "partsCount",
"columnName": "partsCount",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "processedAt",
"columnName": "processedAt",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_Message_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
},
{
"name": "index_Message_state_processedAt",
"unique": false,
"columnNames": [
"state",
"processedAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_state_processedAt` ON `${TABLE_NAME}` (`state`, `processedAt`)"
},
{
"name": "index_Message_state_createdAt",
"unique": false,
"columnNames": [
"state",
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_state_createdAt` ON `${TABLE_NAME}` (`state`, `createdAt`)"
}
],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `error` TEXT, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "RecipientState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `phoneNumber`, `state`), FOREIGN KEY(`messageId`, `phoneNumber`) REFERENCES `MessageRecipient`(`messageId`, `phoneNumber`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "MessageRecipient",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId",
"phoneNumber"
],
"referencedColumns": [
"messageId",
"phoneNumber"
]
}
]
},
{
"tableName": "MessageState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `state`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "WebHook",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `url` TEXT NOT NULL, `event` TEXT NOT NULL, `source` TEXT NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "url",
"columnName": "url",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "event",
"columnName": "event",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "webhook_queue",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `url` TEXT NOT NULL, `payload` TEXT NOT NULL, `retry_count` INTEGER NOT NULL DEFAULT 0, `status` TEXT NOT NULL DEFAULT 'pending', `created_at` INTEGER NOT NULL, `next_attempt` INTEGER NOT NULL, `last_error` TEXT)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "url",
"columnName": "url",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "payload",
"columnName": "payload",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "retryCount",
"columnName": "retry_count",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "status",
"columnName": "status",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'pending'"
},
{
"fieldPath": "createdAt",
"columnName": "created_at",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "nextAttempt",
"columnName": "next_attempt",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastError",
"columnName": "last_error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_webhook_queue_status_next_attempt",
"unique": false,
"columnNames": [
"status",
"next_attempt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_webhook_queue_status_next_attempt` ON `${TABLE_NAME}` (`status`, `next_attempt`)"
},
{
"name": "index_webhook_queue_status_created_at",
"unique": false,
"columnNames": [
"status",
"created_at"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_webhook_queue_status_created_at` ON `${TABLE_NAME}` (`status`, `created_at`)"
}
],
"foreignKeys": []
},
{
"tableName": "logs_entries",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`priority` TEXT NOT NULL, `module` TEXT NOT NULL, `message` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `context` TEXT, `createdAt` INTEGER NOT NULL)",
"fields": [
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "module",
"columnName": "module",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "message",
"columnName": "message",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "context",
"columnName": "context",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_logs_entries_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_logs_entries_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
}
],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'e647a679fe74540d36be13c53eadc9cb')"
]
}
}
@@ -1,524 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 18,
"identityHash": "b001a953ad105f209e7c4a05c2f4c3ff",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `withDeliveryReport` INTEGER NOT NULL DEFAULT 1, `simNumber` INTEGER, `validUntil` TEXT, `isEncrypted` INTEGER NOT NULL DEFAULT 0, `skipPhoneValidation` INTEGER NOT NULL DEFAULT 0, `priority` INTEGER NOT NULL DEFAULT 0, `source` TEXT NOT NULL DEFAULT 'Local', `type` TEXT NOT NULL DEFAULT 'Text', `content` TEXT NOT NULL, `state` TEXT NOT NULL, `partsCount` INTEGER, `createdAt` INTEGER NOT NULL DEFAULT 0, `processedAt` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "withDeliveryReport",
"columnName": "withDeliveryReport",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "1"
},
{
"fieldPath": "simNumber",
"columnName": "simNumber",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "validUntil",
"columnName": "validUntil",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "isEncrypted",
"columnName": "isEncrypted",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "skipPhoneValidation",
"columnName": "skipPhoneValidation",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "type",
"columnName": "type",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Text'"
},
{
"fieldPath": "content",
"columnName": "content",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "partsCount",
"columnName": "partsCount",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "processedAt",
"columnName": "processedAt",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_Message_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
},
{
"name": "index_Message_state_processedAt",
"unique": false,
"columnNames": [
"state",
"processedAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_state_processedAt` ON `${TABLE_NAME}` (`state`, `processedAt`)"
},
{
"name": "index_Message_state_createdAt",
"unique": false,
"columnNames": [
"state",
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_state_createdAt` ON `${TABLE_NAME}` (`state`, `createdAt`)"
}
],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `error` TEXT, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "RecipientState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `phoneNumber`, `state`), FOREIGN KEY(`messageId`, `phoneNumber`) REFERENCES `MessageRecipient`(`messageId`, `phoneNumber`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "MessageRecipient",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId",
"phoneNumber"
],
"referencedColumns": [
"messageId",
"phoneNumber"
]
}
]
},
{
"tableName": "MessageState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `state`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "WebHook",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `url` TEXT NOT NULL, `event` TEXT NOT NULL, `source` TEXT NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "url",
"columnName": "url",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "event",
"columnName": "event",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "webhook_queue",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `url` TEXT NOT NULL, `payload` TEXT NOT NULL, `retry_count` INTEGER NOT NULL DEFAULT 0, `status` TEXT NOT NULL DEFAULT 'pending', `created_at` INTEGER NOT NULL, `next_attempt` INTEGER NOT NULL, `last_error` TEXT)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "url",
"columnName": "url",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "payload",
"columnName": "payload",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "retryCount",
"columnName": "retry_count",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "status",
"columnName": "status",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'pending'"
},
{
"fieldPath": "createdAt",
"columnName": "created_at",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "nextAttempt",
"columnName": "next_attempt",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastError",
"columnName": "last_error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_webhook_queue_status_next_attempt",
"unique": false,
"columnNames": [
"status",
"next_attempt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_webhook_queue_status_next_attempt` ON `${TABLE_NAME}` (`status`, `next_attempt`)"
},
{
"name": "index_webhook_queue_status_created_at",
"unique": false,
"columnNames": [
"status",
"created_at"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_webhook_queue_status_created_at` ON `${TABLE_NAME}` (`status`, `created_at`)"
}
],
"foreignKeys": []
},
{
"tableName": "logs_entries",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`priority` TEXT NOT NULL, `module` TEXT NOT NULL, `message` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `context` TEXT, `createdAt` INTEGER NOT NULL)",
"fields": [
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "module",
"columnName": "module",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "message",
"columnName": "message",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "context",
"columnName": "context",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_logs_entries_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_logs_entries_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
}
],
"foreignKeys": []
},
{
"tableName": "tokens",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `expiresAt` INTEGER NOT NULL, `revokedAt` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "expiresAt",
"columnName": "expiresAt",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "revokedAt",
"columnName": "revokedAt",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_tokens_expiresAt",
"unique": false,
"columnNames": [
"expiresAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_tokens_expiresAt` ON `${TABLE_NAME}` (`expiresAt`)"
}
],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'b001a953ad105f209e7c4a05c2f4c3ff')"
]
}
}
@@ -1,605 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 19,
"identityHash": "ea9afd972e8ac233d6efa55d7cc8109b",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `withDeliveryReport` INTEGER NOT NULL DEFAULT 1, `simNumber` INTEGER, `validUntil` TEXT, `isEncrypted` INTEGER NOT NULL DEFAULT 0, `skipPhoneValidation` INTEGER NOT NULL DEFAULT 0, `priority` INTEGER NOT NULL DEFAULT 0, `source` TEXT NOT NULL DEFAULT 'Local', `type` TEXT NOT NULL DEFAULT 'Text', `content` TEXT NOT NULL, `state` TEXT NOT NULL, `partsCount` INTEGER, `createdAt` INTEGER NOT NULL DEFAULT 0, `processedAt` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "withDeliveryReport",
"columnName": "withDeliveryReport",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "1"
},
{
"fieldPath": "simNumber",
"columnName": "simNumber",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "validUntil",
"columnName": "validUntil",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "isEncrypted",
"columnName": "isEncrypted",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "skipPhoneValidation",
"columnName": "skipPhoneValidation",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "type",
"columnName": "type",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Text'"
},
{
"fieldPath": "content",
"columnName": "content",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "partsCount",
"columnName": "partsCount",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "processedAt",
"columnName": "processedAt",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_Message_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
},
{
"name": "index_Message_state_processedAt",
"unique": false,
"columnNames": [
"state",
"processedAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_state_processedAt` ON `${TABLE_NAME}` (`state`, `processedAt`)"
},
{
"name": "index_Message_state_createdAt",
"unique": false,
"columnNames": [
"state",
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_state_createdAt` ON `${TABLE_NAME}` (`state`, `createdAt`)"
}
],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `error` TEXT, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "RecipientState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `phoneNumber`, `state`), FOREIGN KEY(`messageId`, `phoneNumber`) REFERENCES `MessageRecipient`(`messageId`, `phoneNumber`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "MessageRecipient",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId",
"phoneNumber"
],
"referencedColumns": [
"messageId",
"phoneNumber"
]
}
]
},
{
"tableName": "MessageState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `state`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "WebHook",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `url` TEXT NOT NULL, `event` TEXT NOT NULL, `source` TEXT NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "url",
"columnName": "url",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "event",
"columnName": "event",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "webhook_queue",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `url` TEXT NOT NULL, `payload` TEXT NOT NULL, `retry_count` INTEGER NOT NULL DEFAULT 0, `status` TEXT NOT NULL DEFAULT 'pending', `created_at` INTEGER NOT NULL, `next_attempt` INTEGER NOT NULL, `last_error` TEXT)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "url",
"columnName": "url",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "payload",
"columnName": "payload",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "retryCount",
"columnName": "retry_count",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "status",
"columnName": "status",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'pending'"
},
{
"fieldPath": "createdAt",
"columnName": "created_at",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "nextAttempt",
"columnName": "next_attempt",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastError",
"columnName": "last_error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_webhook_queue_status_next_attempt",
"unique": false,
"columnNames": [
"status",
"next_attempt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_webhook_queue_status_next_attempt` ON `${TABLE_NAME}` (`status`, `next_attempt`)"
},
{
"name": "index_webhook_queue_status_created_at",
"unique": false,
"columnNames": [
"status",
"created_at"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_webhook_queue_status_created_at` ON `${TABLE_NAME}` (`status`, `created_at`)"
}
],
"foreignKeys": []
},
{
"tableName": "logs_entries",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`priority` TEXT NOT NULL, `module` TEXT NOT NULL, `message` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `context` TEXT, `createdAt` INTEGER NOT NULL)",
"fields": [
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "module",
"columnName": "module",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "message",
"columnName": "message",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "context",
"columnName": "context",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_logs_entries_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_logs_entries_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
}
],
"foreignKeys": []
},
{
"tableName": "tokens",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `expiresAt` INTEGER NOT NULL, `revokedAt` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "expiresAt",
"columnName": "expiresAt",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "revokedAt",
"columnName": "revokedAt",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_tokens_expiresAt",
"unique": false,
"columnNames": [
"expiresAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_tokens_expiresAt` ON `${TABLE_NAME}` (`expiresAt`)"
}
],
"foreignKeys": []
},
{
"tableName": "incoming_messages",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `type` TEXT NOT NULL, `sender` TEXT NOT NULL, `recipient` TEXT, `simNumber` INTEGER, `subscriptionId` INTEGER, `contentPreview` TEXT NOT NULL, `createdAt` INTEGER NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "type",
"columnName": "type",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "sender",
"columnName": "sender",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "recipient",
"columnName": "recipient",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "simNumber",
"columnName": "simNumber",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "subscriptionId",
"columnName": "subscriptionId",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "contentPreview",
"columnName": "contentPreview",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_incoming_messages_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_incoming_messages_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
},
{
"name": "index_incoming_messages_type",
"unique": false,
"columnNames": [
"type"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_incoming_messages_type` ON `${TABLE_NAME}` (`type`)"
}
],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'ea9afd972e8ac233d6efa55d7cc8109b')"
]
}
}
@@ -1,98 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 2,
"identityHash": "1c3c3246ea0f368ec95b740b2f50e18b",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `text` TEXT NOT NULL, `source` TEXT NOT NULL DEFAULT 'Local', `state` TEXT NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "text",
"columnName": "text",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '1c3c3246ea0f368ec95b740b2f50e18b')"
]
}
}
@@ -1,605 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 20,
"identityHash": "b746d44a36cc274b009e421faa9c96ee",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `withDeliveryReport` INTEGER NOT NULL DEFAULT 1, `simNumber` INTEGER, `validUntil` TEXT, `isEncrypted` INTEGER NOT NULL DEFAULT 0, `skipPhoneValidation` INTEGER NOT NULL DEFAULT 0, `priority` INTEGER NOT NULL DEFAULT 0, `source` TEXT NOT NULL DEFAULT 'Local', `type` TEXT NOT NULL DEFAULT 'Text', `content` TEXT NOT NULL, `state` TEXT NOT NULL, `partsCount` INTEGER, `createdAt` INTEGER NOT NULL DEFAULT 0, `processedAt` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "withDeliveryReport",
"columnName": "withDeliveryReport",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "1"
},
{
"fieldPath": "simNumber",
"columnName": "simNumber",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "validUntil",
"columnName": "validUntil",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "isEncrypted",
"columnName": "isEncrypted",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "skipPhoneValidation",
"columnName": "skipPhoneValidation",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "type",
"columnName": "type",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Text'"
},
{
"fieldPath": "content",
"columnName": "content",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "partsCount",
"columnName": "partsCount",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "processedAt",
"columnName": "processedAt",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_Message_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
},
{
"name": "index_Message_state_processedAt",
"unique": false,
"columnNames": [
"state",
"processedAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_state_processedAt` ON `${TABLE_NAME}` (`state`, `processedAt`)"
},
{
"name": "index_Message_state_createdAt",
"unique": false,
"columnNames": [
"state",
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_state_createdAt` ON `${TABLE_NAME}` (`state`, `createdAt`)"
}
],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `error` TEXT, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "RecipientState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `phoneNumber`, `state`), FOREIGN KEY(`messageId`, `phoneNumber`) REFERENCES `MessageRecipient`(`messageId`, `phoneNumber`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "MessageRecipient",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId",
"phoneNumber"
],
"referencedColumns": [
"messageId",
"phoneNumber"
]
}
]
},
{
"tableName": "MessageState",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `state` TEXT NOT NULL, `updatedAt` INTEGER NOT NULL, PRIMARY KEY(`messageId`, `state`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "updatedAt",
"columnName": "updatedAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"state"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "WebHook",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `url` TEXT NOT NULL, `event` TEXT NOT NULL, `source` TEXT NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "url",
"columnName": "url",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "event",
"columnName": "event",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "webhook_queue",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `url` TEXT NOT NULL, `payload` TEXT NOT NULL, `retry_count` INTEGER NOT NULL DEFAULT 0, `status` TEXT NOT NULL DEFAULT 'pending', `created_at` INTEGER NOT NULL, `next_attempt` INTEGER NOT NULL, `last_error` TEXT, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "url",
"columnName": "url",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "payload",
"columnName": "payload",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "retryCount",
"columnName": "retry_count",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "status",
"columnName": "status",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'pending'"
},
{
"fieldPath": "createdAt",
"columnName": "created_at",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "nextAttempt",
"columnName": "next_attempt",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastError",
"columnName": "last_error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_webhook_queue_status_next_attempt",
"unique": false,
"columnNames": [
"status",
"next_attempt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_webhook_queue_status_next_attempt` ON `${TABLE_NAME}` (`status`, `next_attempt`)"
},
{
"name": "index_webhook_queue_status_created_at",
"unique": false,
"columnNames": [
"status",
"created_at"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_webhook_queue_status_created_at` ON `${TABLE_NAME}` (`status`, `created_at`)"
}
],
"foreignKeys": []
},
{
"tableName": "logs_entries",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`priority` TEXT NOT NULL, `module` TEXT NOT NULL, `message` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `context` TEXT, `createdAt` INTEGER NOT NULL)",
"fields": [
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "module",
"columnName": "module",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "message",
"columnName": "message",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "context",
"columnName": "context",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_logs_entries_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_logs_entries_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
}
],
"foreignKeys": []
},
{
"tableName": "tokens",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `expiresAt` INTEGER NOT NULL, `revokedAt` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "expiresAt",
"columnName": "expiresAt",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "revokedAt",
"columnName": "revokedAt",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_tokens_expiresAt",
"unique": false,
"columnNames": [
"expiresAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_tokens_expiresAt` ON `${TABLE_NAME}` (`expiresAt`)"
}
],
"foreignKeys": []
},
{
"tableName": "incoming_messages",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `type` TEXT NOT NULL, `sender` TEXT NOT NULL, `recipient` TEXT, `simNumber` INTEGER, `subscriptionId` INTEGER, `contentPreview` TEXT NOT NULL, `createdAt` INTEGER NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "type",
"columnName": "type",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "sender",
"columnName": "sender",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "recipient",
"columnName": "recipient",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "simNumber",
"columnName": "simNumber",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "subscriptionId",
"columnName": "subscriptionId",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "contentPreview",
"columnName": "contentPreview",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_incoming_messages_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_incoming_messages_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
},
{
"name": "index_incoming_messages_type",
"unique": false,
"columnNames": [
"type"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_incoming_messages_type` ON `${TABLE_NAME}` (`type`)"
}
],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'b746d44a36cc274b009e421faa9c96ee')"
]
}
}
@@ -1,105 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 3,
"identityHash": "89b4d1142a9c77effbb234879f4b540a",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `text` TEXT NOT NULL, `source` TEXT NOT NULL DEFAULT 'Local', `state` TEXT NOT NULL, `createdAt` INTEGER NOT NULL DEFAULT 0, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "text",
"columnName": "text",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '89b4d1142a9c77effbb234879f4b540a')"
]
}
}
@@ -1,111 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 4,
"identityHash": "e4a0450ae2b806b52bfbcd2456501a1d",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `text` TEXT NOT NULL, `source` TEXT NOT NULL DEFAULT 'Local', `state` TEXT NOT NULL, `createdAt` INTEGER NOT NULL DEFAULT 0, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "text",
"columnName": "text",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `error` TEXT, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'e4a0450ae2b806b52bfbcd2456501a1d')"
]
}
}
@@ -1,118 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 5,
"identityHash": "4a86263b9bb6a736271cc66c6faca254",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `text` TEXT NOT NULL, `source` TEXT NOT NULL DEFAULT 'Local', `state` TEXT NOT NULL, `isEncrypted` INTEGER NOT NULL DEFAULT 0, `createdAt` INTEGER NOT NULL DEFAULT 0, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "text",
"columnName": "text",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "isEncrypted",
"columnName": "isEncrypted",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `error` TEXT, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '4a86263b9bb6a736271cc66c6faca254')"
]
}
}
@@ -1,137 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 6,
"identityHash": "c85c71171bb3e9eb347615dd91e7ae82",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `text` TEXT NOT NULL, `withDeliveryReport` INTEGER NOT NULL DEFAULT 1, `simNumber` INTEGER, `validUntil` TEXT, `isEncrypted` INTEGER NOT NULL DEFAULT 0, `state` TEXT NOT NULL, `source` TEXT NOT NULL DEFAULT 'Local', `createdAt` INTEGER NOT NULL DEFAULT 0, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "text",
"columnName": "text",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "withDeliveryReport",
"columnName": "withDeliveryReport",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "1"
},
{
"fieldPath": "simNumber",
"columnName": "simNumber",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "validUntil",
"columnName": "validUntil",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "isEncrypted",
"columnName": "isEncrypted",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `error` TEXT, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'c85c71171bb3e9eb347615dd91e7ae82')"
]
}
}
@@ -1,144 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 7,
"identityHash": "0638620d8ed8717433cb8e718cfc4646",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `text` TEXT NOT NULL, `withDeliveryReport` INTEGER NOT NULL DEFAULT 1, `simNumber` INTEGER, `validUntil` TEXT, `isEncrypted` INTEGER NOT NULL DEFAULT 0, `skipPhoneValidation` INTEGER NOT NULL DEFAULT 0, `source` TEXT NOT NULL DEFAULT 'Local', `state` TEXT NOT NULL, `createdAt` INTEGER NOT NULL DEFAULT 0, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "text",
"columnName": "text",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "withDeliveryReport",
"columnName": "withDeliveryReport",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "1"
},
{
"fieldPath": "simNumber",
"columnName": "simNumber",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "validUntil",
"columnName": "validUntil",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "isEncrypted",
"columnName": "isEncrypted",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "skipPhoneValidation",
"columnName": "skipPhoneValidation",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `error` TEXT, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '0638620d8ed8717433cb8e718cfc4646')"
]
}
}
@@ -1,144 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 8,
"identityHash": "0638620d8ed8717433cb8e718cfc4646",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `text` TEXT NOT NULL, `withDeliveryReport` INTEGER NOT NULL DEFAULT 1, `simNumber` INTEGER, `validUntil` TEXT, `isEncrypted` INTEGER NOT NULL DEFAULT 0, `skipPhoneValidation` INTEGER NOT NULL DEFAULT 0, `source` TEXT NOT NULL DEFAULT 'Local', `state` TEXT NOT NULL, `createdAt` INTEGER NOT NULL DEFAULT 0, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "text",
"columnName": "text",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "withDeliveryReport",
"columnName": "withDeliveryReport",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "1"
},
{
"fieldPath": "simNumber",
"columnName": "simNumber",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "validUntil",
"columnName": "validUntil",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "isEncrypted",
"columnName": "isEncrypted",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "skipPhoneValidation",
"columnName": "skipPhoneValidation",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `error` TEXT, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '0638620d8ed8717433cb8e718cfc4646')"
]
}
}
@@ -1,169 +0,0 @@
{
"formatVersion": 1,
"database": {
"version": 9,
"identityHash": "bfb73410aeb4903b9ea559c1b60bd8e3",
"entities": [
{
"tableName": "Message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `text` TEXT NOT NULL, `withDeliveryReport` INTEGER NOT NULL DEFAULT 1, `simNumber` INTEGER, `validUntil` TEXT, `isEncrypted` INTEGER NOT NULL DEFAULT 0, `skipPhoneValidation` INTEGER NOT NULL DEFAULT 0, `source` TEXT NOT NULL DEFAULT 'Local', `state` TEXT NOT NULL, `createdAt` INTEGER NOT NULL DEFAULT 0, `processedAt` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "text",
"columnName": "text",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "withDeliveryReport",
"columnName": "withDeliveryReport",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "1"
},
{
"fieldPath": "simNumber",
"columnName": "simNumber",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "validUntil",
"columnName": "validUntil",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "isEncrypted",
"columnName": "isEncrypted",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "skipPhoneValidation",
"columnName": "skipPhoneValidation",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "source",
"columnName": "source",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'Local'"
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "processedAt",
"columnName": "processedAt",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_Message_createdAt",
"unique": false,
"columnNames": [
"createdAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_createdAt` ON `${TABLE_NAME}` (`createdAt`)"
},
{
"name": "index_Message_processedAt",
"unique": false,
"columnNames": [
"processedAt"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_Message_processedAt` ON `${TABLE_NAME}` (`processedAt`)"
}
],
"foreignKeys": []
},
{
"tableName": "MessageRecipient",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`messageId` TEXT NOT NULL, `phoneNumber` TEXT NOT NULL, `state` TEXT NOT NULL, `error` TEXT, PRIMARY KEY(`messageId`, `phoneNumber`), FOREIGN KEY(`messageId`) REFERENCES `Message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "messageId",
"columnName": "messageId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "phoneNumber",
"columnName": "phoneNumber",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"messageId",
"phoneNumber"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": [
{
"table": "Message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"messageId"
],
"referencedColumns": [
"id"
]
}
]
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'bfb73410aeb4903b9ea559c1b60bd8e3')"
]
}
}
@@ -0,0 +1 @@
ewogICJmb3JtYXRWZXJzaW9uIjogMSwKICAiZGF0YWJhc2UiOiB7CiAgICAidmVyc2lvbiI6IDEsCiAgICAiaWRlbnRpdHlIYXNoIjogIjY3ZmU0ODFiNDg1ZjRkMjcwNWFiNzQ2ODg0YWQ2OWIxIiwKICAgICJlbnRpdGllcyI6IFsKICAgICAgewogICAgICAgICJ0YWJsZU5hbWUiOiAiTWVzc2FnZSIsCiAgICAgICAgImNyZWF0ZVNxbCI6ICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgJHtUQUJMRV9OQU1FfWAgKGBpZGAgVEVYVCBOT1QgTlVMTCwgYHRleHRgIFRFWFQgTk9UIE5VTEwsIGBzdGF0ZWAgVEVYVCBOT1QgTlVMTCwgUFJJTUFSWSBLRVkoYGlkYCkpIiwKICAgICAgICAiZmllbGRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZmllbGRQYXRoIjogImlkIiwKICAgICAgICAgICAgImNvbHVtbk5hbWUiOiAiaWQiLAogICAgICAgICAgICAiYWZmaW5pdHkiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImZpZWxkUGF0aCI6ICJ0ZXh0IiwKICAgICAgICAgICAgImNvbHVtbk5hbWUiOiAidGV4dCIsCiAgICAgICAgICAgICJhZmZpbml0eSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZmllbGRQYXRoIjogInN0YXRlIiwKICAgICAgICAgICAgImNvbHVtbk5hbWUiOiAic3RhdGUiLAogICAgICAgICAgICAiYWZmaW5pdHkiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInByaW1hcnlLZXkiOiB7CiAgICAgICAgICAiY29sdW1uTmFtZXMiOiBbCiAgICAgICAgICAgICJpZCIKICAgICAgICAgIF0sCiAgICAgICAgICAiYXV0b0dlbmVyYXRlIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJpbmRpY2VzIjogW10sCiAgICAgICAgImZvcmVpZ25LZXlzIjogW10KICAgICAgfSwKICAgICAgewogICAgICAgICJ0YWJsZU5hbWUiOiAiTWVzc2FnZVJlY2lwaWVudCIsCiAgICAgICAgImNyZWF0ZVNxbCI6ICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgJHtUQUJMRV9OQU1FfWAgKGBtZXNzYWdlSWRgIFRFWFQgTk9UIE5VTEwsIGBwaG9uZU51bWJlcmAgVEVYVCBOT1QgTlVMTCwgYHN0YXRlYCBURVhUIE5PVCBOVUxMLCBQUklNQVJZIEtFWShgbWVzc2FnZUlkYCwgYHBob25lTnVtYmVyYCksIEZPUkVJR04gS0VZKGBtZXNzYWdlSWRgKSBSRUZFUkVOQ0VTIGBNZXNzYWdlYChgaWRgKSBPTiBVUERBVEUgTk8gQUNUSU9OIE9OIERFTEVURSBDQVNDQURFICkiLAogICAgICAgICJmaWVsZHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJmaWVsZFBhdGgiOiAibWVzc2FnZUlkIiwKICAgICAgICAgICAgImNvbHVtbk5hbWUiOiAibWVzc2FnZUlkIiwKICAgICAgICAgICAgImFmZmluaXR5IjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJmaWVsZFBhdGgiOiAicGhvbmVOdW1iZXIiLAogICAgICAgICAgICAiY29sdW1uTmFtZSI6ICJwaG9uZU51bWJlciIsCiAgICAgICAgICAgICJhZmZpbml0eSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZmllbGRQYXRoIjogInN0YXRlIiwKICAgICAgICAgICAgImNvbHVtbk5hbWUiOiAic3RhdGUiLAogICAgICAgICAgICAiYWZmaW5pdHkiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInByaW1hcnlLZXkiOiB7CiAgICAgICAgICAiY29sdW1uTmFtZXMiOiBbCiAgICAgICAgICAgICJtZXNzYWdlSWQiLAogICAgICAgICAgICAicGhvbmVOdW1iZXIiCiAgICAgICAgICBdLAogICAgICAgICAgImF1dG9HZW5lcmF0ZSI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaW5kaWNlcyI6IFtdLAogICAgICAgICJmb3JlaWduS2V5cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgInRhYmxlIjogIk1lc3NhZ2UiLAogICAgICAgICAgICAib25EZWxldGUiOiAiQ0FTQ0FERSIsCiAgICAgICAgICAgICJvblVwZGF0ZSI6ICJOTyBBQ1RJT04iLAogICAgICAgICAgICAiY29sdW1ucyI6IFsKICAgICAgICAgICAgICAibWVzc2FnZUlkIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicmVmZXJlbmNlZENvbHVtbnMiOiBbCiAgICAgICAgICAgICAgImlkIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9CiAgICBdLAogICAgInZpZXdzIjogW10sCiAgICAic2V0dXBRdWVyaWVzIjogWwogICAgICAiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgcm9vbV9tYXN0ZXJfdGFibGUgKGlkIElOVEVHRVIgUFJJTUFSWSBLRVksaWRlbnRpdHlfaGFzaCBURVhUKSIsCiAgICAgICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIHJvb21fbWFzdGVyX3RhYmxlIChpZCxpZGVudGl0eV9oYXNoKSBWQUxVRVMoNDIsICc2N2ZlNDgxYjQ4NWY0ZDI3MDVhYjc0Njg4NGFkNjliMScpIgogICAgXQogIH0KfQ==
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
ewogICJmb3JtYXRWZXJzaW9uIjogMSwKICAiZGF0YWJhc2UiOiB7CiAgICAidmVyc2lvbiI6IDIsCiAgICAiaWRlbnRpdHlIYXNoIjogIjFjM2MzMjQ2ZWEwZjM2OGVjOTViNzQwYjJmNTBlMThiIiwKICAgICJlbnRpdGllcyI6IFsKICAgICAgewogICAgICAgICJ0YWJsZU5hbWUiOiAiTWVzc2FnZSIsCiAgICAgICAgImNyZWF0ZVNxbCI6ICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgJHtUQUJMRV9OQU1FfWAgKGBpZGAgVEVYVCBOT1QgTlVMTCwgYHRleHRgIFRFWFQgTk9UIE5VTEwsIGBzb3VyY2VgIFRFWFQgTk9UIE5VTEwgREVGQVVMVCAnTG9jYWwnLCBgc3RhdGVgIFRFWFQgTk9UIE5VTEwsIFBSSU1BUlkgS0VZKGBpZGApKSIsCiAgICAgICAgImZpZWxkcyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImZpZWxkUGF0aCI6ICJpZCIsCiAgICAgICAgICAgICJjb2x1bW5OYW1lIjogImlkIiwKICAgICAgICAgICAgImFmZmluaXR5IjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJmaWVsZFBhdGgiOiAidGV4dCIsCiAgICAgICAgICAgICJjb2x1bW5OYW1lIjogInRleHQiLAogICAgICAgICAgICAiYWZmaW5pdHkiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImZpZWxkUGF0aCI6ICJzb3VyY2UiLAogICAgICAgICAgICAiY29sdW1uTmFtZSI6ICJzb3VyY2UiLAogICAgICAgICAgICAiYWZmaW5pdHkiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHRWYWx1ZSI6ICInTG9jYWwnIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImZpZWxkUGF0aCI6ICJzdGF0ZSIsCiAgICAgICAgICAgICJjb2x1bW5OYW1lIjogInN0YXRlIiwKICAgICAgICAgICAgImFmZmluaXR5IjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwcmltYXJ5S2V5IjogewogICAgICAgICAgImNvbHVtbk5hbWVzIjogWwogICAgICAgICAgICAiaWQiCiAgICAgICAgICBdLAogICAgICAgICAgImF1dG9HZW5lcmF0ZSI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaW5kaWNlcyI6IFtdLAogICAgICAgICJmb3JlaWduS2V5cyI6IFtdCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAidGFibGVOYW1lIjogIk1lc3NhZ2VSZWNpcGllbnQiLAogICAgICAgICJjcmVhdGVTcWwiOiAiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYCR7VEFCTEVfTkFNRX1gIChgbWVzc2FnZUlkYCBURVhUIE5PVCBOVUxMLCBgcGhvbmVOdW1iZXJgIFRFWFQgTk9UIE5VTEwsIGBzdGF0ZWAgVEVYVCBOT1QgTlVMTCwgUFJJTUFSWSBLRVkoYG1lc3NhZ2VJZGAsIGBwaG9uZU51bWJlcmApLCBGT1JFSUdOIEtFWShgbWVzc2FnZUlkYCkgUkVGRVJFTkNFUyBgTWVzc2FnZWAoYGlkYCkgT04gVVBEQVRFIE5PIEFDVElPTiBPTiBERUxFVEUgQ0FTQ0FERSApIiwKICAgICAgICAiZmllbGRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZmllbGRQYXRoIjogIm1lc3NhZ2VJZCIsCiAgICAgICAgICAgICJjb2x1bW5OYW1lIjogIm1lc3NhZ2VJZCIsCiAgICAgICAgICAgICJhZmZpbml0eSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZmllbGRQYXRoIjogInBob25lTnVtYmVyIiwKICAgICAgICAgICAgImNvbHVtbk5hbWUiOiAicGhvbmVOdW1iZXIiLAogICAgICAgICAgICAiYWZmaW5pdHkiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImZpZWxkUGF0aCI6ICJzdGF0ZSIsCiAgICAgICAgICAgICJjb2x1bW5OYW1lIjogInN0YXRlIiwKICAgICAgICAgICAgImFmZmluaXR5IjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwcmltYXJ5S2V5IjogewogICAgICAgICAgImNvbHVtbk5hbWVzIjogWwogICAgICAgICAgICAibWVzc2FnZUlkIiwKICAgICAgICAgICAgInBob25lTnVtYmVyIgogICAgICAgICAgXSwKICAgICAgICAgICJhdXRvR2VuZXJhdGUiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImluZGljZXMiOiBbXSwKICAgICAgICAiZm9yZWlnbktleXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0YWJsZSI6ICJNZXNzYWdlIiwKICAgICAgICAgICAgIm9uRGVsZXRlIjogIkNBU0NBREUiLAogICAgICAgICAgICAib25VcGRhdGUiOiAiTk8gQUNUSU9OIiwKICAgICAgICAgICAgImNvbHVtbnMiOiBbCiAgICAgICAgICAgICAgIm1lc3NhZ2VJZCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInJlZmVyZW5jZWRDb2x1bW5zIjogWwogICAgICAgICAgICAgICJpZCIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfQogICAgXSwKICAgICJ2aWV3cyI6IFtdLAogICAgInNldHVwUXVlcmllcyI6IFsKICAgICAgIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIHJvb21fbWFzdGVyX3RhYmxlIChpZCBJTlRFR0VSIFBSSU1BUlkgS0VZLGlkZW50aXR5X2hhc2ggVEVYVCkiLAogICAgICAiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyByb29tX21hc3Rlcl90YWJsZSAoaWQsaWRlbnRpdHlfaGFzaCkgVkFMVUVTKDQyLCAnMWMzYzMyNDZlYTBmMzY4ZWM5NWI3NDBiMmY1MGUxOGInKSIKICAgIF0KICB9Cn0=
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
ewogICJmb3JtYXRWZXJzaW9uIjogMSwKICAiZGF0YWJhc2UiOiB7CiAgICAidmVyc2lvbiI6IDMsCiAgICAiaWRlbnRpdHlIYXNoIjogIjg5YjRkMTE0MmE5Yzc3ZWZmYmIyMzQ4NzlmNGI1NDBhIiwKICAgICJlbnRpdGllcyI6IFsKICAgICAgewogICAgICAgICJ0YWJsZU5hbWUiOiAiTWVzc2FnZSIsCiAgICAgICAgImNyZWF0ZVNxbCI6ICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgJHtUQUJMRV9OQU1FfWAgKGBpZGAgVEVYVCBOT1QgTlVMTCwgYHRleHRgIFRFWFQgTk9UIE5VTEwsIGBzb3VyY2VgIFRFWFQgTk9UIE5VTEwgREVGQVVMVCAnTG9jYWwnLCBgc3RhdGVgIFRFWFQgTk9UIE5VTEwsIGBjcmVhdGVkQXRgIElOVEVHRVIgTk9UIE5VTEwgREVGQVVMVCAwLCBQUklNQVJZIEtFWShgaWRgKSkiLAogICAgICAgICJmaWVsZHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJmaWVsZFBhdGgiOiAiaWQiLAogICAgICAgICAgICAiY29sdW1uTmFtZSI6ICJpZCIsCiAgICAgICAgICAgICJhZmZpbml0eSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZmllbGRQYXRoIjogInRleHQiLAogICAgICAgICAgICAiY29sdW1uTmFtZSI6ICJ0ZXh0IiwKICAgICAgICAgICAgImFmZmluaXR5IjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJmaWVsZFBhdGgiOiAic291cmNlIiwKICAgICAgICAgICAgImNvbHVtbk5hbWUiOiAic291cmNlIiwKICAgICAgICAgICAgImFmZmluaXR5IjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUsCiAgICAgICAgICAgICJkZWZhdWx0VmFsdWUiOiAiJ0xvY2FsJyIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJmaWVsZFBhdGgiOiAic3RhdGUiLAogICAgICAgICAgICAiY29sdW1uTmFtZSI6ICJzdGF0ZSIsCiAgICAgICAgICAgICJhZmZpbml0eSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZmllbGRQYXRoIjogImNyZWF0ZWRBdCIsCiAgICAgICAgICAgICJjb2x1bW5OYW1lIjogImNyZWF0ZWRBdCIsCiAgICAgICAgICAgICJhZmZpbml0eSI6ICJJTlRFR0VSIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdFZhbHVlIjogIjAiCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicHJpbWFyeUtleSI6IHsKICAgICAgICAgICJjb2x1bW5OYW1lcyI6IFsKICAgICAgICAgICAgImlkIgogICAgICAgICAgXSwKICAgICAgICAgICJhdXRvR2VuZXJhdGUiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImluZGljZXMiOiBbXSwKICAgICAgICAiZm9yZWlnbktleXMiOiBbXQogICAgICB9LAogICAgICB7CiAgICAgICAgInRhYmxlTmFtZSI6ICJNZXNzYWdlUmVjaXBpZW50IiwKICAgICAgICAiY3JlYXRlU3FsIjogIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGAke1RBQkxFX05BTUV9YCAoYG1lc3NhZ2VJZGAgVEVYVCBOT1QgTlVMTCwgYHBob25lTnVtYmVyYCBURVhUIE5PVCBOVUxMLCBgc3RhdGVgIFRFWFQgTk9UIE5VTEwsIFBSSU1BUlkgS0VZKGBtZXNzYWdlSWRgLCBgcGhvbmVOdW1iZXJgKSwgRk9SRUlHTiBLRVkoYG1lc3NhZ2VJZGApIFJFRkVSRU5DRVMgYE1lc3NhZ2VgKGBpZGApIE9OIFVQREFURSBOTyBBQ1RJT04gT04gREVMRVRFIENBU0NBREUgKSIsCiAgICAgICAgImZpZWxkcyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImZpZWxkUGF0aCI6ICJtZXNzYWdlSWQiLAogICAgICAgICAgICAiY29sdW1uTmFtZSI6ICJtZXNzYWdlSWQiLAogICAgICAgICAgICAiYWZmaW5pdHkiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImZpZWxkUGF0aCI6ICJwaG9uZU51bWJlciIsCiAgICAgICAgICAgICJjb2x1bW5OYW1lIjogInBob25lTnVtYmVyIiwKICAgICAgICAgICAgImFmZmluaXR5IjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJmaWVsZFBhdGgiOiAic3RhdGUiLAogICAgICAgICAgICAiY29sdW1uTmFtZSI6ICJzdGF0ZSIsCiAgICAgICAgICAgICJhZmZpbml0eSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicHJpbWFyeUtleSI6IHsKICAgICAgICAgICJjb2x1bW5OYW1lcyI6IFsKICAgICAgICAgICAgIm1lc3NhZ2VJZCIsCiAgICAgICAgICAgICJwaG9uZU51bWJlciIKICAgICAgICAgIF0sCiAgICAgICAgICAiYXV0b0dlbmVyYXRlIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJpbmRpY2VzIjogW10sCiAgICAgICAgImZvcmVpZ25LZXlzIjogWwogICAgICAgICAgewogICAgICAgICAgICAidGFibGUiOiAiTWVzc2FnZSIsCiAgICAgICAgICAgICJvbkRlbGV0ZSI6ICJDQVNDQURFIiwKICAgICAgICAgICAgIm9uVXBkYXRlIjogIk5PIEFDVElPTiIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICJtZXNzYWdlSWQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJyZWZlcmVuY2VkQ29sdW1ucyI6IFsKICAgICAgICAgICAgICAiaWQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0KICAgIF0sCiAgICAidmlld3MiOiBbXSwKICAgICJzZXR1cFF1ZXJpZXMiOiBbCiAgICAgICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyByb29tX21hc3Rlcl90YWJsZSAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSxpZGVudGl0eV9oYXNoIFRFWFQpIiwKICAgICAgIklOU0VSVCBPUiBSRVBMQUNFIElOVE8gcm9vbV9tYXN0ZXJfdGFibGUgKGlkLGlkZW50aXR5X2hhc2gpIFZBTFVFUyg0MiwgJzg5YjRkMTE0MmE5Yzc3ZWZmYmIyMzQ4NzlmNGI1NDBhJykiCiAgICBdCiAgfQp9
@@ -0,0 +1 @@
ewogICJmb3JtYXRWZXJzaW9uIjogMSwKICAiZGF0YWJhc2UiOiB7CiAgICAidmVyc2lvbiI6IDQsCiAgICAiaWRlbnRpdHlIYXNoIjogImU0YTA0NTBhZTJiODA2YjUyYmZiY2QyNDU2NTAxYTFkIiwKICAgICJlbnRpdGllcyI6IFsKICAgICAgewogICAgICAgICJ0YWJsZU5hbWUiOiAiTWVzc2FnZSIsCiAgICAgICAgImNyZWF0ZVNxbCI6ICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgJHtUQUJMRV9OQU1FfWAgKGBpZGAgVEVYVCBOT1QgTlVMTCwgYHRleHRgIFRFWFQgTk9UIE5VTEwsIGBzb3VyY2VgIFRFWFQgTk9UIE5VTEwgREVGQVVMVCAnTG9jYWwnLCBgc3RhdGVgIFRFWFQgTk9UIE5VTEwsIGBjcmVhdGVkQXRgIElOVEVHRVIgTk9UIE5VTEwgREVGQVVMVCAwLCBQUklNQVJZIEtFWShgaWRgKSkiLAogICAgICAgICJmaWVsZHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJmaWVsZFBhdGgiOiAiaWQiLAogICAgICAgICAgICAiY29sdW1uTmFtZSI6ICJpZCIsCiAgICAgICAgICAgICJhZmZpbml0eSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZmllbGRQYXRoIjogInRleHQiLAogICAgICAgICAgICAiY29sdW1uTmFtZSI6ICJ0ZXh0IiwKICAgICAgICAgICAgImFmZmluaXR5IjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJmaWVsZFBhdGgiOiAic291cmNlIiwKICAgICAgICAgICAgImNvbHVtbk5hbWUiOiAic291cmNlIiwKICAgICAgICAgICAgImFmZmluaXR5IjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUsCiAgICAgICAgICAgICJkZWZhdWx0VmFsdWUiOiAiJ0xvY2FsJyIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJmaWVsZFBhdGgiOiAic3RhdGUiLAogICAgICAgICAgICAiY29sdW1uTmFtZSI6ICJzdGF0ZSIsCiAgICAgICAgICAgICJhZmZpbml0eSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZmllbGRQYXRoIjogImNyZWF0ZWRBdCIsCiAgICAgICAgICAgICJjb2x1bW5OYW1lIjogImNyZWF0ZWRBdCIsCiAgICAgICAgICAgICJhZmZpbml0eSI6ICJJTlRFR0VSIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdFZhbHVlIjogIjAiCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicHJpbWFyeUtleSI6IHsKICAgICAgICAgICJjb2x1bW5OYW1lcyI6IFsKICAgICAgICAgICAgImlkIgogICAgICAgICAgXSwKICAgICAgICAgICJhdXRvR2VuZXJhdGUiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImluZGljZXMiOiBbXSwKICAgICAgICAiZm9yZWlnbktleXMiOiBbXQogICAgICB9LAogICAgICB7CiAgICAgICAgInRhYmxlTmFtZSI6ICJNZXNzYWdlUmVjaXBpZW50IiwKICAgICAgICAiY3JlYXRlU3FsIjogIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGAke1RBQkxFX05BTUV9YCAoYG1lc3NhZ2VJZGAgVEVYVCBOT1QgTlVMTCwgYHBob25lTnVtYmVyYCBURVhUIE5PVCBOVUxMLCBgc3RhdGVgIFRFWFQgTk9UIE5VTEwsIGBlcnJvcmAgVEVYVCwgUFJJTUFSWSBLRVkoYG1lc3NhZ2VJZGAsIGBwaG9uZU51bWJlcmApLCBGT1JFSUdOIEtFWShgbWVzc2FnZUlkYCkgUkVGRVJFTkNFUyBgTWVzc2FnZWAoYGlkYCkgT04gVVBEQVRFIE5PIEFDVElPTiBPTiBERUxFVEUgQ0FTQ0FERSApIiwKICAgICAgICAiZmllbGRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZmllbGRQYXRoIjogIm1lc3NhZ2VJZCIsCiAgICAgICAgICAgICJjb2x1bW5OYW1lIjogIm1lc3NhZ2VJZCIsCiAgICAgICAgICAgICJhZmZpbml0eSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZmllbGRQYXRoIjogInBob25lTnVtYmVyIiwKICAgICAgICAgICAgImNvbHVtbk5hbWUiOiAicGhvbmVOdW1iZXIiLAogICAgICAgICAgICAiYWZmaW5pdHkiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImZpZWxkUGF0aCI6ICJzdGF0ZSIsCiAgICAgICAgICAgICJjb2x1bW5OYW1lIjogInN0YXRlIiwKICAgICAgICAgICAgImFmZmluaXR5IjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJmaWVsZFBhdGgiOiAiZXJyb3IiLAogICAgICAgICAgICAiY29sdW1uTmFtZSI6ICJlcnJvciIsCiAgICAgICAgICAgICJhZmZpbml0eSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiBmYWxzZQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInByaW1hcnlLZXkiOiB7CiAgICAgICAgICAiY29sdW1uTmFtZXMiOiBbCiAgICAgICAgICAgICJtZXNzYWdlSWQiLAogICAgICAgICAgICAicGhvbmVOdW1iZXIiCiAgICAgICAgICBdLAogICAgICAgICAgImF1dG9HZW5lcmF0ZSI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaW5kaWNlcyI6IFtdLAogICAgICAgICJmb3JlaWduS2V5cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgInRhYmxlIjogIk1lc3NhZ2UiLAogICAgICAgICAgICAib25EZWxldGUiOiAiQ0FTQ0FERSIsCiAgICAgICAgICAgICJvblVwZGF0ZSI6ICJOTyBBQ1RJT04iLAogICAgICAgICAgICAiY29sdW1ucyI6IFsKICAgICAgICAgICAgICAibWVzc2FnZUlkIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicmVmZXJlbmNlZENvbHVtbnMiOiBbCiAgICAgICAgICAgICAgImlkIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9CiAgICBdLAogICAgInZpZXdzIjogW10sCiAgICAic2V0dXBRdWVyaWVzIjogWwogICAgICAiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgcm9vbV9tYXN0ZXJfdGFibGUgKGlkIElOVEVHRVIgUFJJTUFSWSBLRVksaWRlbnRpdHlfaGFzaCBURVhUKSIsCiAgICAgICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIHJvb21fbWFzdGVyX3RhYmxlIChpZCxpZGVudGl0eV9oYXNoKSBWQUxVRVMoNDIsICdlNGEwNDUwYWUyYjgwNmI1MmJmYmNkMjQ1NjUwMWExZCcpIgogICAgXQogIH0KfQ==
@@ -0,0 +1 @@
ewogICJmb3JtYXRWZXJzaW9uIjogMSwKICAiZGF0YWJhc2UiOiB7CiAgICAidmVyc2lvbiI6IDUsCiAgICAiaWRlbnRpdHlIYXNoIjogIjRhODYyNjNiOWJiNmE3MzYyNzFjYzY2YzZmYWNhMjU0IiwKICAgICJlbnRpdGllcyI6IFsKICAgICAgewogICAgICAgICJ0YWJsZU5hbWUiOiAiTWVzc2FnZSIsCiAgICAgICAgImNyZWF0ZVNxbCI6ICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgJHtUQUJMRV9OQU1FfWAgKGBpZGAgVEVYVCBOT1QgTlVMTCwgYHRleHRgIFRFWFQgTk9UIE5VTEwsIGBzb3VyY2VgIFRFWFQgTk9UIE5VTEwgREVGQVVMVCAnTG9jYWwnLCBgc3RhdGVgIFRFWFQgTk9UIE5VTEwsIGBpc0VuY3J5cHRlZGAgSU5URUdFUiBOT1QgTlVMTCBERUZBVUxUIDAsIGBjcmVhdGVkQXRgIElOVEVHRVIgTk9UIE5VTEwgREVGQVVMVCAwLCBQUklNQVJZIEtFWShgaWRgKSkiLAogICAgICAgICJmaWVsZHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJmaWVsZFBhdGgiOiAiaWQiLAogICAgICAgICAgICAiY29sdW1uTmFtZSI6ICJpZCIsCiAgICAgICAgICAgICJhZmZpbml0eSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZmllbGRQYXRoIjogInRleHQiLAogICAgICAgICAgICAiY29sdW1uTmFtZSI6ICJ0ZXh0IiwKICAgICAgICAgICAgImFmZmluaXR5IjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJmaWVsZFBhdGgiOiAic291cmNlIiwKICAgICAgICAgICAgImNvbHVtbk5hbWUiOiAic291cmNlIiwKICAgICAgICAgICAgImFmZmluaXR5IjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUsCiAgICAgICAgICAgICJkZWZhdWx0VmFsdWUiOiAiJ0xvY2FsJyIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJmaWVsZFBhdGgiOiAic3RhdGUiLAogICAgICAgICAgICAiY29sdW1uTmFtZSI6ICJzdGF0ZSIsCiAgICAgICAgICAgICJhZmZpbml0eSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZmllbGRQYXRoIjogImlzRW5jcnlwdGVkIiwKICAgICAgICAgICAgImNvbHVtbk5hbWUiOiAiaXNFbmNyeXB0ZWQiLAogICAgICAgICAgICAiYWZmaW5pdHkiOiAiSU5URUdFUiIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHRWYWx1ZSI6ICIwIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImZpZWxkUGF0aCI6ICJjcmVhdGVkQXQiLAogICAgICAgICAgICAiY29sdW1uTmFtZSI6ICJjcmVhdGVkQXQiLAogICAgICAgICAgICAiYWZmaW5pdHkiOiAiSU5URUdFUiIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHRWYWx1ZSI6ICIwIgogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInByaW1hcnlLZXkiOiB7CiAgICAgICAgICAiY29sdW1uTmFtZXMiOiBbCiAgICAgICAgICAgICJpZCIKICAgICAgICAgIF0sCiAgICAgICAgICAiYXV0b0dlbmVyYXRlIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJpbmRpY2VzIjogW10sCiAgICAgICAgImZvcmVpZ25LZXlzIjogW10KICAgICAgfSwKICAgICAgewogICAgICAgICJ0YWJsZU5hbWUiOiAiTWVzc2FnZVJlY2lwaWVudCIsCiAgICAgICAgImNyZWF0ZVNxbCI6ICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgJHtUQUJMRV9OQU1FfWAgKGBtZXNzYWdlSWRgIFRFWFQgTk9UIE5VTEwsIGBwaG9uZU51bWJlcmAgVEVYVCBOT1QgTlVMTCwgYHN0YXRlYCBURVhUIE5PVCBOVUxMLCBgZXJyb3JgIFRFWFQsIFBSSU1BUlkgS0VZKGBtZXNzYWdlSWRgLCBgcGhvbmVOdW1iZXJgKSwgRk9SRUlHTiBLRVkoYG1lc3NhZ2VJZGApIFJFRkVSRU5DRVMgYE1lc3NhZ2VgKGBpZGApIE9OIFVQREFURSBOTyBBQ1RJT04gT04gREVMRVRFIENBU0NBREUgKSIsCiAgICAgICAgImZpZWxkcyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImZpZWxkUGF0aCI6ICJtZXNzYWdlSWQiLAogICAgICAgICAgICAiY29sdW1uTmFtZSI6ICJtZXNzYWdlSWQiLAogICAgICAgICAgICAiYWZmaW5pdHkiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImZpZWxkUGF0aCI6ICJwaG9uZU51bWJlciIsCiAgICAgICAgICAgICJjb2x1bW5OYW1lIjogInBob25lTnVtYmVyIiwKICAgICAgICAgICAgImFmZmluaXR5IjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJmaWVsZFBhdGgiOiAic3RhdGUiLAogICAgICAgICAgICAiY29sdW1uTmFtZSI6ICJzdGF0ZSIsCiAgICAgICAgICAgICJhZmZpbml0eSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZmllbGRQYXRoIjogImVycm9yIiwKICAgICAgICAgICAgImNvbHVtbk5hbWUiOiAiZXJyb3IiLAogICAgICAgICAgICAiYWZmaW5pdHkiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogZmFsc2UKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwcmltYXJ5S2V5IjogewogICAgICAgICAgImNvbHVtbk5hbWVzIjogWwogICAgICAgICAgICAibWVzc2FnZUlkIiwKICAgICAgICAgICAgInBob25lTnVtYmVyIgogICAgICAgICAgXSwKICAgICAgICAgICJhdXRvR2VuZXJhdGUiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImluZGljZXMiOiBbXSwKICAgICAgICAiZm9yZWlnbktleXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0YWJsZSI6ICJNZXNzYWdlIiwKICAgICAgICAgICAgIm9uRGVsZXRlIjogIkNBU0NBREUiLAogICAgICAgICAgICAib25VcGRhdGUiOiAiTk8gQUNUSU9OIiwKICAgICAgICAgICAgImNvbHVtbnMiOiBbCiAgICAgICAgICAgICAgIm1lc3NhZ2VJZCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInJlZmVyZW5jZWRDb2x1bW5zIjogWwogICAgICAgICAgICAgICJpZCIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfQogICAgXSwKICAgICJ2aWV3cyI6IFtdLAogICAgInNldHVwUXVlcmllcyI6IFsKICAgICAgIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIHJvb21fbWFzdGVyX3RhYmxlIChpZCBJTlRFR0VSIFBSSU1BUlkgS0VZLGlkZW50aXR5X2hhc2ggVEVYVCkiLAogICAgICAiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyByb29tX21hc3Rlcl90YWJsZSAoaWQsaWRlbnRpdHlfaGFzaCkgVkFMVUVTKDQyLCAnNGE4NjI2M2I5YmI2YTczNjI3MWNjNjZjNmZhY2EyNTQnKSIKICAgIF0KICB9Cn0=
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
package me.capcom.smsgateway package pt.whatsms.gateway
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry import androidx.test.platform.app.InstrumentationRegistry
@@ -17,6 +17,6 @@ class ExampleInstrumentedTest {
fun useAppContext() { fun useAppContext() {
// Context of the app under test. // Context of the app under test.
val appContext = InstrumentationRegistry.getInstrumentation().targetContext val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("me.capcom.smsgateway", appContext.packageName) assertEquals("pt.whatsms.gateway", appContext.packageName)
} }
} }
+7 -2
View File
@@ -7,6 +7,7 @@
android:required="false" /> android:required="false" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" />
@@ -55,8 +56,8 @@
android:enabled="true" android:enabled="true"
android:exported="true"> android:exported="true">
<intent-filter> <intent-filter>
<action android:name="me.capcom.smsgateway.ACTION_SENT" /> <action android:name="pt.whatsms.gateway.ACTION_SENT" />
<action android:name="me.capcom.smsgateway.ACTION_DELIVERED" /> <action android:name="pt.whatsms.gateway.ACTION_DELIVERED" />
</intent-filter> </intent-filter>
</receiver> </receiver>
<receiver <receiver
@@ -84,6 +85,10 @@
android:foregroundServiceType="dataSync" android:foregroundServiceType="dataSync"
tools:node="merge" /> tools:node="merge" />
<activity
android:name=".ui.ScanPairingActivity"
android:exported="false" />
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true"> android:exported="true">
@@ -1,31 +0,0 @@
package me.capcom.smsgateway.data.entities
import androidx.room.ColumnInfo
import androidx.room.Embedded
import androidx.room.Relation
data class MessageWithRecipients(
@Embedded val message: Message,
@Relation(
parentColumn = "id",
entityColumn = "messageId",
)
val recipients: List<MessageRecipient>,
@Relation(
parentColumn = "id",
entityColumn = "messageId",
)
val states: List<MessageState> = emptyList(),
@ColumnInfo(name = "rowid")
val rowId: Long = 0,
) {
val state: me.capcom.smsgateway.domain.ProcessingState
get() = when {
recipients.any { it.state == me.capcom.smsgateway.domain.ProcessingState.Pending } -> me.capcom.smsgateway.domain.ProcessingState.Pending
recipients.any { it.state == me.capcom.smsgateway.domain.ProcessingState.Processed } -> me.capcom.smsgateway.domain.ProcessingState.Processed
recipients.all { it.state == me.capcom.smsgateway.domain.ProcessingState.Failed } -> me.capcom.smsgateway.domain.ProcessingState.Failed
recipients.all { it.state == me.capcom.smsgateway.domain.ProcessingState.Delivered } -> me.capcom.smsgateway.domain.ProcessingState.Delivered
else -> me.capcom.smsgateway.domain.ProcessingState.Sent
}
}
@@ -1,5 +0,0 @@
package me.capcom.smsgateway.modules.localserver.domain.messages
data class HashedMessage(
val hash: String,
)
@@ -1,5 +0,0 @@
package me.capcom.smsgateway.modules.localserver.domain.messages
data class TextMessage(
val text: String,
)
@@ -1,12 +0,0 @@
package me.capcom.smsgateway.modules.ping.events
import me.capcom.smsgateway.domain.HealthResponse
import me.capcom.smsgateway.modules.events.AppEvent
class PingEvent(
val health: HealthResponse,
) : AppEvent(TYPE) {
companion object {
const val TYPE = "PingEvent"
}
}
@@ -1,12 +0,0 @@
package me.capcom.smsgateway.ui.styles
import android.graphics.Color
val me.capcom.smsgateway.domain.ProcessingState.color: Int
get() = when (this) {
me.capcom.smsgateway.domain.ProcessingState.Pending -> Color.parseColor("#FFBB86FC")
me.capcom.smsgateway.domain.ProcessingState.Processed -> Color.parseColor("#FF6200EE")
me.capcom.smsgateway.domain.ProcessingState.Sent -> Color.parseColor("#FF3700B3")
me.capcom.smsgateway.domain.ProcessingState.Delivered -> Color.parseColor("#FF03DAC5")
me.capcom.smsgateway.domain.ProcessingState.Failed -> Color.parseColor("#FF018786")
}
@@ -1,24 +1,24 @@
package me.capcom.smsgateway package pt.whatsms.gateway
import android.app.Application import android.app.Application
import healthModule import healthModule
import me.capcom.smsgateway.data.dbModule import pt.whatsms.gateway.data.dbModule
import me.capcom.smsgateway.modules.connection.connectionModule import pt.whatsms.gateway.modules.connection.connectionModule
import me.capcom.smsgateway.modules.encryption.encryptionModule import pt.whatsms.gateway.modules.encryption.encryptionModule
import me.capcom.smsgateway.modules.events.eventBusModule import pt.whatsms.gateway.modules.events.eventBusModule
import me.capcom.smsgateway.modules.gateway.GatewayService import pt.whatsms.gateway.modules.gateway.GatewayService
import me.capcom.smsgateway.modules.incoming.incomingModule import pt.whatsms.gateway.modules.incoming.incomingModule
import me.capcom.smsgateway.modules.localserver.localserverModule import pt.whatsms.gateway.modules.localserver.localserverModule
import me.capcom.smsgateway.modules.logs.logsModule import pt.whatsms.gateway.modules.logs.logsModule
import me.capcom.smsgateway.modules.messages.messagesModule import pt.whatsms.gateway.modules.messages.messagesModule
import me.capcom.smsgateway.modules.notifications.notificationsModule import pt.whatsms.gateway.modules.notifications.notificationsModule
import me.capcom.smsgateway.modules.orchestrator.OrchestratorService import pt.whatsms.gateway.modules.orchestrator.OrchestratorService
import me.capcom.smsgateway.modules.orchestrator.orchestratorModule import pt.whatsms.gateway.modules.orchestrator.orchestratorModule
import me.capcom.smsgateway.modules.ping.pingModule import pt.whatsms.gateway.modules.ping.pingModule
import me.capcom.smsgateway.modules.receiver.receiverModule import pt.whatsms.gateway.modules.receiver.receiverModule
import me.capcom.smsgateway.modules.settings.settingsModule import pt.whatsms.gateway.modules.settings.settingsModule
import me.capcom.smsgateway.modules.webhooks.webhooksModule import pt.whatsms.gateway.modules.webhooks.webhooksModule
import me.capcom.smsgateway.receivers.EventsReceiver import pt.whatsms.gateway.receivers.EventsReceiver
import org.koin.android.ext.android.get import org.koin.android.ext.android.get
import org.koin.android.ext.android.inject import org.koin.android.ext.android.inject
import org.koin.android.ext.koin.androidContext import org.koin.android.ext.koin.androidContext
@@ -42,7 +42,7 @@ class App: Application() {
incomingModule, incomingModule,
receiverModule, receiverModule,
encryptionModule, encryptionModule,
me.capcom.smsgateway.modules.gateway.gatewayModule, pt.whatsms.gateway.modules.gateway.gatewayModule,
healthModule, healthModule,
webhooksModule, webhooksModule,
localserverModule, localserverModule,
@@ -1,8 +1,8 @@
package me.capcom.smsgateway package pt.whatsms.gateway
import android.util.Log import android.util.Log
import me.capcom.smsgateway.modules.logs.LogsService import pt.whatsms.gateway.modules.logs.LogsService
import me.capcom.smsgateway.modules.logs.db.LogEntry import pt.whatsms.gateway.modules.logs.db.LogEntry
import org.koin.core.component.KoinComponent import org.koin.core.component.KoinComponent
import java.lang.Thread.UncaughtExceptionHandler import java.lang.Thread.UncaughtExceptionHandler
@@ -1,4 +1,4 @@
package me.capcom.smsgateway package pt.whatsms.gateway
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
@@ -6,10 +6,10 @@ import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import me.capcom.smsgateway.databinding.ActivityMainBinding import pt.whatsms.gateway.databinding.ActivityMainBinding
import me.capcom.smsgateway.ui.HolderFragment import pt.whatsms.gateway.ui.HolderFragment
import me.capcom.smsgateway.ui.HomeFragment import pt.whatsms.gateway.ui.HomeFragment
import me.capcom.smsgateway.ui.SettingsFragment import pt.whatsms.gateway.ui.SettingsFragment
class MainActivity : AppCompatActivity() { class MainActivity : AppCompatActivity() {
@@ -1,25 +1,25 @@
package me.capcom.smsgateway.data package pt.whatsms.gateway.data
import androidx.room.AutoMigration import androidx.room.AutoMigration
import androidx.room.Database import androidx.room.Database
import androidx.room.Room import androidx.room.Room
import androidx.room.RoomDatabase import androidx.room.RoomDatabase
import androidx.room.TypeConverters import androidx.room.TypeConverters
import me.capcom.smsgateway.data.dao.MessagesDao import pt.whatsms.gateway.data.dao.MessagesDao
import me.capcom.smsgateway.data.dao.TokensDao import pt.whatsms.gateway.data.dao.TokensDao
import me.capcom.smsgateway.data.entities.Message import pt.whatsms.gateway.data.entities.Message
import me.capcom.smsgateway.data.entities.MessageRecipient import pt.whatsms.gateway.data.entities.MessageRecipient
import me.capcom.smsgateway.data.entities.MessageState import pt.whatsms.gateway.data.entities.MessageState
import me.capcom.smsgateway.data.entities.RecipientState import pt.whatsms.gateway.data.entities.RecipientState
import me.capcom.smsgateway.data.entities.Token import pt.whatsms.gateway.data.entities.Token
import me.capcom.smsgateway.modules.incoming.db.IncomingMessage import pt.whatsms.gateway.modules.incoming.db.IncomingMessage
import me.capcom.smsgateway.modules.incoming.db.IncomingMessagesDao import pt.whatsms.gateway.modules.incoming.db.IncomingMessagesDao
import me.capcom.smsgateway.modules.logs.db.LogEntriesDao import pt.whatsms.gateway.modules.logs.db.LogEntriesDao
import me.capcom.smsgateway.modules.logs.db.LogEntry import pt.whatsms.gateway.modules.logs.db.LogEntry
import me.capcom.smsgateway.modules.webhooks.db.WebHook import pt.whatsms.gateway.modules.webhooks.db.WebHook
import me.capcom.smsgateway.modules.webhooks.db.WebHooksDao import pt.whatsms.gateway.modules.webhooks.db.WebHooksDao
import me.capcom.smsgateway.modules.webhooks.db.WebhookQueueDao import pt.whatsms.gateway.modules.webhooks.db.WebhookQueueDao
import me.capcom.smsgateway.modules.webhooks.db.WebhookQueueEntity import pt.whatsms.gateway.modules.webhooks.db.WebhookQueueEntity
@Database( @Database(
entities = [ entities = [
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.data package pt.whatsms.gateway.data
import androidx.room.TypeConverter import androidx.room.TypeConverter
import com.google.gson.GsonBuilder import com.google.gson.GsonBuilder
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.data package pt.whatsms.gateway.data
import androidx.room.migration.Migration import androidx.room.migration.Migration
import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteDatabase
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.data package pt.whatsms.gateway.data
import org.koin.dsl.module import org.koin.dsl.module
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.data.dao package pt.whatsms.gateway.data.dao
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.room.Dao import androidx.room.Dao
@@ -6,15 +6,15 @@ import androidx.room.Insert
import androidx.room.OnConflictStrategy import androidx.room.OnConflictStrategy
import androidx.room.Query import androidx.room.Query
import androidx.room.Transaction import androidx.room.Transaction
import me.capcom.smsgateway.data.entities.Message import pt.whatsms.gateway.data.entities.Message
import me.capcom.smsgateway.data.entities.MessageRecipient import pt.whatsms.gateway.data.entities.MessageRecipient
import me.capcom.smsgateway.data.entities.MessageState import pt.whatsms.gateway.data.entities.MessageState
import me.capcom.smsgateway.data.entities.MessageWithRecipients import pt.whatsms.gateway.data.entities.MessageWithRecipients
import me.capcom.smsgateway.data.entities.MessagesStats import pt.whatsms.gateway.data.entities.MessagesStats
import me.capcom.smsgateway.data.entities.MessagesTotals import pt.whatsms.gateway.data.entities.MessagesTotals
import me.capcom.smsgateway.data.entities.RecipientState import pt.whatsms.gateway.data.entities.RecipientState
import me.capcom.smsgateway.domain.EntitySource import pt.whatsms.gateway.domain.EntitySource
import me.capcom.smsgateway.domain.ProcessingState import pt.whatsms.gateway.domain.ProcessingState
@Dao @Dao
interface MessagesDao { interface MessagesDao {
@@ -100,7 +100,7 @@ interface MessagesDao {
) )
fun _insertRecipientStatesByMessage( fun _insertRecipientStatesByMessage(
messageId: String, messageId: String,
state: me.capcom.smsgateway.domain.ProcessingState state: pt.whatsms.gateway.domain.ProcessingState
) )
@Transaction @Transaction
@@ -125,9 +125,9 @@ interface MessagesDao {
} }
@Query("UPDATE message SET state = :state WHERE id = :id AND state <> 'Failed'") @Query("UPDATE message SET state = :state WHERE id = :id AND state <> 'Failed'")
fun _updateMessageState(id: String, state: me.capcom.smsgateway.domain.ProcessingState) fun _updateMessageState(id: String, state: pt.whatsms.gateway.domain.ProcessingState)
fun updateMessageState(id: String, state: me.capcom.smsgateway.domain.ProcessingState) { fun updateMessageState(id: String, state: pt.whatsms.gateway.domain.ProcessingState) {
_updateMessageState(id, state) _updateMessageState(id, state)
_insertMessageState( _insertMessageState(
MessageState( MessageState(
@@ -145,7 +145,7 @@ interface MessagesDao {
_insertMessageState( _insertMessageState(
MessageState( MessageState(
id, id,
me.capcom.smsgateway.domain.ProcessingState.Processed, pt.whatsms.gateway.domain.ProcessingState.Processed,
System.currentTimeMillis() System.currentTimeMillis()
) )
) )
@@ -155,7 +155,7 @@ interface MessagesDao {
fun _updateRecipientState( fun _updateRecipientState(
id: String, id: String,
phoneNumber: String, phoneNumber: String,
state: me.capcom.smsgateway.domain.ProcessingState, state: pt.whatsms.gateway.domain.ProcessingState,
error: String? error: String?
) )
@@ -163,7 +163,7 @@ interface MessagesDao {
fun updateRecipientState( fun updateRecipientState(
id: String, id: String,
phoneNumber: String, phoneNumber: String,
state: me.capcom.smsgateway.domain.ProcessingState, state: pt.whatsms.gateway.domain.ProcessingState,
error: String? error: String?
) { ) {
_updateRecipientState(id, phoneNumber, state, error) _updateRecipientState(id, phoneNumber, state, error)
@@ -177,14 +177,14 @@ interface MessagesDao {
@Query("UPDATE messagerecipient SET state = :state, error = :error WHERE messageId = :id AND state <> 'Failed'") @Query("UPDATE messagerecipient SET state = :state, error = :error WHERE messageId = :id AND state <> 'Failed'")
fun _updateRecipientsState( fun _updateRecipientsState(
id: String, id: String,
state: me.capcom.smsgateway.domain.ProcessingState, state: pt.whatsms.gateway.domain.ProcessingState,
error: String? error: String?
) )
@Transaction @Transaction
fun updateRecipientsState( fun updateRecipientsState(
id: String, id: String,
state: me.capcom.smsgateway.domain.ProcessingState, state: pt.whatsms.gateway.domain.ProcessingState,
error: String? error: String?
) { ) {
_updateRecipientsState(id, state, error) _updateRecipientsState(id, state, error)
@@ -1,10 +1,10 @@
package me.capcom.smsgateway.data.dao package pt.whatsms.gateway.data.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Insert import androidx.room.Insert
import androidx.room.OnConflictStrategy import androidx.room.OnConflictStrategy
import androidx.room.Query import androidx.room.Query
import me.capcom.smsgateway.data.entities.Token import pt.whatsms.gateway.data.entities.Token
@Dao @Dao
interface TokensDao { interface TokensDao {
@@ -1,12 +1,12 @@
package me.capcom.smsgateway.data.entities package pt.whatsms.gateway.data.entities
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
import com.google.gson.Gson import com.google.gson.Gson
import me.capcom.smsgateway.domain.EntitySource import pt.whatsms.gateway.domain.EntitySource
import me.capcom.smsgateway.domain.MessageContent import pt.whatsms.gateway.domain.MessageContent
import me.capcom.smsgateway.domain.ProcessingState import pt.whatsms.gateway.domain.ProcessingState
import java.util.Date import java.util.Date
enum class MessageType { enum class MessageType {
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.data.entities package pt.whatsms.gateway.data.entities
import androidx.room.Entity import androidx.room.Entity
import androidx.room.ForeignKey import androidx.room.ForeignKey
@@ -12,6 +12,6 @@ import androidx.room.ForeignKey
data class MessageRecipient( data class MessageRecipient(
val messageId: String, val messageId: String,
val phoneNumber: String, val phoneNumber: String,
val state: me.capcom.smsgateway.domain.ProcessingState = me.capcom.smsgateway.domain.ProcessingState.Pending, val state: pt.whatsms.gateway.domain.ProcessingState = pt.whatsms.gateway.domain.ProcessingState.Pending,
val error: String? = null val error: String? = null
) )
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.data.entities package pt.whatsms.gateway.data.entities
import androidx.room.Entity import androidx.room.Entity
import androidx.room.ForeignKey import androidx.room.ForeignKey
@@ -16,6 +16,6 @@ import androidx.room.ForeignKey
) )
data class MessageState( data class MessageState(
val messageId: String, val messageId: String,
val state: me.capcom.smsgateway.domain.ProcessingState, val state: pt.whatsms.gateway.domain.ProcessingState,
val updatedAt: Long val updatedAt: Long
) )
@@ -0,0 +1,31 @@
package pt.whatsms.gateway.data.entities
import androidx.room.ColumnInfo
import androidx.room.Embedded
import androidx.room.Relation
data class MessageWithRecipients(
@Embedded val message: Message,
@Relation(
parentColumn = "id",
entityColumn = "messageId",
)
val recipients: List<MessageRecipient>,
@Relation(
parentColumn = "id",
entityColumn = "messageId",
)
val states: List<MessageState> = emptyList(),
@ColumnInfo(name = "rowid")
val rowId: Long = 0,
) {
val state: pt.whatsms.gateway.domain.ProcessingState
get() = when {
recipients.any { it.state == pt.whatsms.gateway.domain.ProcessingState.Pending } -> pt.whatsms.gateway.domain.ProcessingState.Pending
recipients.any { it.state == pt.whatsms.gateway.domain.ProcessingState.Processed } -> pt.whatsms.gateway.domain.ProcessingState.Processed
recipients.all { it.state == pt.whatsms.gateway.domain.ProcessingState.Failed } -> pt.whatsms.gateway.domain.ProcessingState.Failed
recipients.all { it.state == pt.whatsms.gateway.domain.ProcessingState.Delivered } -> pt.whatsms.gateway.domain.ProcessingState.Delivered
else -> pt.whatsms.gateway.domain.ProcessingState.Sent
}
}
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.data.entities package pt.whatsms.gateway.data.entities
data class MessagesStats( data class MessagesStats(
val count: Int, val count: Int,
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.data.entities package pt.whatsms.gateway.data.entities
data class MessagesTotals( data class MessagesTotals(
val total: Long, val total: Long,
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.data.entities package pt.whatsms.gateway.data.entities
import androidx.room.Entity import androidx.room.Entity
import androidx.room.ForeignKey import androidx.room.ForeignKey
@@ -17,6 +17,6 @@ import androidx.room.ForeignKey
data class RecipientState( data class RecipientState(
val messageId: String, val messageId: String,
val phoneNumber: String, val phoneNumber: String,
val state: me.capcom.smsgateway.domain.ProcessingState, val state: pt.whatsms.gateway.domain.ProcessingState,
val updatedAt: Long val updatedAt: Long
) )
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.data.entities package pt.whatsms.gateway.data.entities
import androidx.room.Entity import androidx.room.Entity
import androidx.room.Index import androidx.room.Index
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.domain package pt.whatsms.gateway.domain
enum class EntitySource { enum class EntitySource {
Local, Local,
@@ -1,9 +1,9 @@
package me.capcom.smsgateway.domain package pt.whatsms.gateway.domain
import me.capcom.smsgateway.BuildConfig import pt.whatsms.gateway.BuildConfig
import me.capcom.smsgateway.modules.health.domain.CheckResult import pt.whatsms.gateway.modules.health.domain.CheckResult
import me.capcom.smsgateway.modules.health.domain.HealthResult import pt.whatsms.gateway.modules.health.domain.HealthResult
import me.capcom.smsgateway.modules.health.domain.Status import pt.whatsms.gateway.modules.health.domain.Status
class HealthResponse( class HealthResponse(
healthResult: HealthResult, healthResult: HealthResult,
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.domain package pt.whatsms.gateway.domain
sealed class MessageContent { sealed class MessageContent {
data class Text(val text: String) : MessageContent() { data class Text(val text: String) : MessageContent() {
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.domain package pt.whatsms.gateway.domain
enum class ProcessingState { enum class ProcessingState {
Pending, Pending,
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.extensions package pt.whatsms.gateway.extensions
import android.os.Build import android.os.Build
import com.google.gson.GsonBuilder import com.google.gson.GsonBuilder
@@ -1,6 +1,6 @@
package me.capcom.smsgateway.helpers package pt.whatsms.gateway.helpers
import me.capcom.smsgateway.BuildConfig import pt.whatsms.gateway.BuildConfig
object BuildHelper { object BuildHelper {
val isInsecureVersion = val isInsecureVersion =
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.helpers package pt.whatsms.gateway.helpers
import android.os.Build import android.os.Build
import java.text.ParseException import java.text.ParseException
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.helpers package pt.whatsms.gateway.helpers
import com.google.i18n.phonenumbers.PhoneNumberUtil import com.google.i18n.phonenumbers.PhoneNumberUtil
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.helpers package pt.whatsms.gateway.helpers
import android.util.Log import android.util.Log
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
@@ -1,11 +1,11 @@
package me.capcom.smsgateway.helpers package pt.whatsms.gateway.helpers
import android.content.ComponentName import android.content.ComponentName
import android.content.Context import android.content.Context
import android.content.pm.PackageManager import android.content.pm.PackageManager
import androidx.core.content.edit import androidx.core.content.edit
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import me.capcom.smsgateway.receivers.BootReceiver import pt.whatsms.gateway.receivers.BootReceiver
class SettingsHelper(private val context: Context) { class SettingsHelper(private val context: Context) {
private val settings = PreferenceManager.getDefaultSharedPreferences(context) private val settings = PreferenceManager.getDefaultSharedPreferences(context)
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.helpers package pt.whatsms.gateway.helpers
import android.Manifest import android.Manifest
import android.annotation.SuppressLint import android.annotation.SuppressLint
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.modules.connection package pt.whatsms.gateway.modules.connection
enum class CellularNetworkType { enum class CellularNetworkType {
None, None,
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.modules.connection package pt.whatsms.gateway.modules.connection
import android.Manifest import android.Manifest
import android.content.Context import android.content.Context
@@ -11,10 +11,10 @@ import android.telephony.TelephonyManager
import androidx.core.app.ActivityCompat import androidx.core.app.ActivityCompat
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import me.capcom.smsgateway.modules.health.domain.CheckResult import pt.whatsms.gateway.modules.health.domain.CheckResult
import me.capcom.smsgateway.modules.health.domain.Status import pt.whatsms.gateway.modules.health.domain.Status
import me.capcom.smsgateway.modules.logs.LogsService import pt.whatsms.gateway.modules.logs.LogsService
import me.capcom.smsgateway.modules.logs.db.LogEntry import pt.whatsms.gateway.modules.logs.db.LogEntry
import org.koin.core.component.KoinComponent import org.koin.core.component.KoinComponent
import org.koin.core.component.inject import org.koin.core.component.inject
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.modules.connection package pt.whatsms.gateway.modules.connection
import org.koin.core.module.dsl.singleOf import org.koin.core.module.dsl.singleOf
import org.koin.dsl.module import org.koin.dsl.module
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.modules.connection package pt.whatsms.gateway.modules.connection
enum class TransportType( enum class TransportType(
val value: Int val value: Int
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.modules.encryption package pt.whatsms.gateway.modules.encryption
import android.util.Base64 import android.util.Base64
import javax.crypto.Cipher import javax.crypto.Cipher
@@ -1,8 +1,8 @@
package me.capcom.smsgateway.modules.encryption package pt.whatsms.gateway.modules.encryption
import me.capcom.smsgateway.modules.settings.Importer import pt.whatsms.gateway.modules.settings.Importer
import me.capcom.smsgateway.modules.settings.KeyValueStorage import pt.whatsms.gateway.modules.settings.KeyValueStorage
import me.capcom.smsgateway.modules.settings.get import pt.whatsms.gateway.modules.settings.get
class EncryptionSettings( class EncryptionSettings(
private val storage: KeyValueStorage, private val storage: KeyValueStorage,
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.modules.encryption package pt.whatsms.gateway.modules.encryption
import org.koin.dsl.module import org.koin.dsl.module
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.modules.events package pt.whatsms.gateway.modules.events
open class AppEvent( open class AppEvent(
@Transient @Transient
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.modules.events package pt.whatsms.gateway.modules.events
import android.util.Log import android.util.Log
import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableSharedFlow
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.modules.events package pt.whatsms.gateway.modules.events
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.modules.events package pt.whatsms.gateway.modules.events
data class ExternalEvent( data class ExternalEvent(
val type: ExternalEventType, val type: ExternalEventType,
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.modules.events package pt.whatsms.gateway.modules.events
import com.google.gson.annotations.SerializedName import com.google.gson.annotations.SerializedName
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.modules.events package pt.whatsms.gateway.modules.events
import org.koin.dsl.module import org.koin.dsl.module
@@ -1,22 +1,22 @@
package me.capcom.smsgateway.modules.gateway package pt.whatsms.gateway.modules.gateway
import android.util.Log import android.util.Log
import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import me.capcom.smsgateway.domain.EntitySource import pt.whatsms.gateway.domain.EntitySource
import me.capcom.smsgateway.modules.events.EventBus import pt.whatsms.gateway.modules.events.EventBus
import me.capcom.smsgateway.modules.events.EventsReceiver import pt.whatsms.gateway.modules.events.EventsReceiver
import me.capcom.smsgateway.modules.gateway.events.DeviceRegisteredEvent import pt.whatsms.gateway.modules.gateway.events.DeviceRegisteredEvent
import me.capcom.smsgateway.modules.gateway.events.MessageEnqueuedEvent import pt.whatsms.gateway.modules.gateway.events.MessageEnqueuedEvent
import me.capcom.smsgateway.modules.gateway.events.SettingsUpdatedEvent import pt.whatsms.gateway.modules.gateway.events.SettingsUpdatedEvent
import me.capcom.smsgateway.modules.gateway.events.WebhooksUpdatedEvent import pt.whatsms.gateway.modules.gateway.events.WebhooksUpdatedEvent
import me.capcom.smsgateway.modules.gateway.services.SSEForegroundService import pt.whatsms.gateway.modules.gateway.services.SSEForegroundService
import me.capcom.smsgateway.modules.gateway.workers.PullMessagesWorker import pt.whatsms.gateway.modules.gateway.workers.PullMessagesWorker
import me.capcom.smsgateway.modules.gateway.workers.SendStateWorker import pt.whatsms.gateway.modules.gateway.workers.SendStateWorker
import me.capcom.smsgateway.modules.gateway.workers.SettingsUpdateWorker import pt.whatsms.gateway.modules.gateway.workers.SettingsUpdateWorker
import me.capcom.smsgateway.modules.gateway.workers.WebhooksUpdateWorker import pt.whatsms.gateway.modules.gateway.workers.WebhooksUpdateWorker
import me.capcom.smsgateway.modules.messages.events.MessageStateChangedEvent import pt.whatsms.gateway.modules.messages.events.MessageStateChangedEvent
import me.capcom.smsgateway.modules.ping.events.PingEvent import pt.whatsms.gateway.modules.ping.events.PingEvent
import org.koin.core.component.get import org.koin.core.component.get
class EventsReceiver : EventsReceiver() { class EventsReceiver : EventsReceiver() {
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.modules.gateway package pt.whatsms.gateway.modules.gateway
import com.google.gson.annotations.SerializedName import com.google.gson.annotations.SerializedName
import io.ktor.client.HttpClient import io.ktor.client.HttpClient
@@ -20,10 +20,10 @@ import io.ktor.http.contentType
import io.ktor.http.hostWithPort import io.ktor.http.hostWithPort
import io.ktor.serialization.gson.gson import io.ktor.serialization.gson.gson
import io.ktor.util.encodeBase64 import io.ktor.util.encodeBase64
import me.capcom.smsgateway.BuildConfig import pt.whatsms.gateway.BuildConfig
import me.capcom.smsgateway.domain.ProcessingState import pt.whatsms.gateway.domain.ProcessingState
import me.capcom.smsgateway.extensions.configure import pt.whatsms.gateway.extensions.configure
import me.capcom.smsgateway.modules.webhooks.domain.WebHookEvent import pt.whatsms.gateway.modules.webhooks.domain.WebHookEvent
import java.util.Date import java.util.Date
class GatewayApi( class GatewayApi(
@@ -35,7 +35,7 @@ class GatewayApi(
private val client = HttpClient(OkHttp) { private val client = HttpClient(OkHttp) {
install(UserAgent) { install(UserAgent) {
agent = "me.capcom.smsgateway/" + BuildConfig.VERSION_NAME agent = "pt.whatsms.gateway/" + BuildConfig.VERSION_NAME
} }
install(ContentNegotiation) { install(ContentNegotiation) {
gson { gson {
@@ -1,26 +1,26 @@
package me.capcom.smsgateway.modules.gateway package pt.whatsms.gateway.modules.gateway
import android.content.Context import android.content.Context
import android.os.Build import android.os.Build
import io.ktor.client.plugins.ClientRequestException import io.ktor.client.plugins.ClientRequestException
import io.ktor.http.HttpStatusCode import io.ktor.http.HttpStatusCode
import me.capcom.smsgateway.data.entities.MessageWithRecipients import pt.whatsms.gateway.data.entities.MessageWithRecipients
import me.capcom.smsgateway.domain.EntitySource import pt.whatsms.gateway.domain.EntitySource
import me.capcom.smsgateway.domain.MessageContent import pt.whatsms.gateway.domain.MessageContent
import me.capcom.smsgateway.modules.events.EventBus import pt.whatsms.gateway.modules.events.EventBus
import me.capcom.smsgateway.modules.gateway.events.DeviceRegisteredEvent import pt.whatsms.gateway.modules.gateway.events.DeviceRegisteredEvent
import me.capcom.smsgateway.modules.gateway.services.SSEForegroundService import pt.whatsms.gateway.modules.gateway.services.SSEForegroundService
import me.capcom.smsgateway.modules.gateway.workers.PullMessagesWorker import pt.whatsms.gateway.modules.gateway.workers.PullMessagesWorker
import me.capcom.smsgateway.modules.gateway.workers.SendStateWorker import pt.whatsms.gateway.modules.gateway.workers.SendStateWorker
import me.capcom.smsgateway.modules.gateway.workers.SettingsUpdateWorker import pt.whatsms.gateway.modules.gateway.workers.SettingsUpdateWorker
import me.capcom.smsgateway.modules.gateway.workers.WebhooksUpdateWorker import pt.whatsms.gateway.modules.gateway.workers.WebhooksUpdateWorker
import me.capcom.smsgateway.modules.logs.LogsService import pt.whatsms.gateway.modules.logs.LogsService
import me.capcom.smsgateway.modules.logs.db.LogEntry import pt.whatsms.gateway.modules.logs.db.LogEntry
import me.capcom.smsgateway.modules.messages.MessagesService import pt.whatsms.gateway.modules.messages.MessagesService
import me.capcom.smsgateway.modules.messages.MessagesSettings import pt.whatsms.gateway.modules.messages.MessagesSettings
import me.capcom.smsgateway.modules.messages.data.SendParams import pt.whatsms.gateway.modules.messages.data.SendParams
import me.capcom.smsgateway.modules.messages.data.SendRequest import pt.whatsms.gateway.modules.messages.data.SendRequest
import me.capcom.smsgateway.services.PushService import pt.whatsms.gateway.services.PushService
import java.util.Date import java.util.Date
class GatewayService( class GatewayService(
@@ -224,7 +224,7 @@ class GatewayService(
val request = SendRequest( val request = SendRequest(
EntitySource.Cloud, EntitySource.Cloud,
me.capcom.smsgateway.modules.messages.data.Message( pt.whatsms.gateway.modules.messages.data.Message(
message.id, message.id,
when (val content = message.content) { when (val content = message.content) {
is GatewayApi.MessageContent.Text -> MessageContent.Text(content.text) is GatewayApi.MessageContent.Text -> MessageContent.Text(content.text)
@@ -1,9 +1,9 @@
package me.capcom.smsgateway.modules.gateway package pt.whatsms.gateway.modules.gateway
import me.capcom.smsgateway.modules.settings.Exporter import pt.whatsms.gateway.modules.settings.Exporter
import me.capcom.smsgateway.modules.settings.Importer import pt.whatsms.gateway.modules.settings.Importer
import me.capcom.smsgateway.modules.settings.KeyValueStorage import pt.whatsms.gateway.modules.settings.KeyValueStorage
import me.capcom.smsgateway.modules.settings.get import pt.whatsms.gateway.modules.settings.get
class GatewaySettings( class GatewaySettings(
private val storage: KeyValueStorage, private val storage: KeyValueStorage,
@@ -54,9 +54,7 @@ class GatewaySettings(
private const val PRIVATE_TOKEN = "private_token" private const val PRIVATE_TOKEN = "private_token"
private const val NOTIFICATION_CHANNEL = "notification_channel" private const val NOTIFICATION_CHANNEL = "notification_channel"
const val PUBLIC_URL = "https://api.sms-gate.app/mobile/v1" // WhatSMS fork: servidor da Descomplicar.
// WhatSMS fork: server capcom6 privado da Descomplicar.
const val WHATSMS_SERVER_URL = "https://smsgw.whatsms.pt/api/mobile/v1" const val WHATSMS_SERVER_URL = "https://smsgw.whatsms.pt/api/mobile/v1"
// WhatSMS fork: private_token do GATEWAY_TOKEN config do server. // WhatSMS fork: private_token do GATEWAY_TOKEN config do server.
@@ -76,7 +74,7 @@ class GatewaySettings(
return data.map { return data.map {
when (it.key) { when (it.key) {
CLOUD_URL -> { CLOUD_URL -> {
val url = it.value?.toString() ?: PUBLIC_URL val url = it.value?.toString() ?: WHATSMS_SERVER_URL
if (url != null && !url.startsWith("https://")) { if (url != null && !url.startsWith("https://")) {
throw IllegalArgumentException("url must start with https://") throw IllegalArgumentException("url must start with https://")
} }
@@ -1,4 +1,4 @@
package me.capcom.smsgateway.modules.gateway package pt.whatsms.gateway.modules.gateway
import org.koin.core.module.dsl.singleOf import org.koin.core.module.dsl.singleOf
import org.koin.dsl.module import org.koin.dsl.module
@@ -1,6 +1,6 @@
package me.capcom.smsgateway.modules.gateway.events package pt.whatsms.gateway.modules.gateway.events
import me.capcom.smsgateway.modules.events.AppEvent import pt.whatsms.gateway.modules.events.AppEvent
sealed class DeviceRegisteredEvent( sealed class DeviceRegisteredEvent(
val server: String, val server: String,
@@ -1,6 +1,6 @@
package me.capcom.smsgateway.modules.gateway.events package pt.whatsms.gateway.modules.gateway.events
import me.capcom.smsgateway.modules.events.AppEvent import pt.whatsms.gateway.modules.events.AppEvent
class MessageEnqueuedEvent : AppEvent(NAME) { class MessageEnqueuedEvent : AppEvent(NAME) {
companion object { companion object {
@@ -1,6 +1,6 @@
package me.capcom.smsgateway.modules.gateway.events package pt.whatsms.gateway.modules.gateway.events
import me.capcom.smsgateway.modules.events.AppEvent import pt.whatsms.gateway.modules.events.AppEvent
class SettingsUpdatedEvent : AppEvent(NAME) { class SettingsUpdatedEvent : AppEvent(NAME) {
@@ -1,6 +1,6 @@
package me.capcom.smsgateway.modules.gateway.events package pt.whatsms.gateway.modules.gateway.events
import me.capcom.smsgateway.modules.events.AppEvent import pt.whatsms.gateway.modules.events.AppEvent
class WebhooksUpdatedEvent : AppEvent(NAME) { class WebhooksUpdatedEvent : AppEvent(NAME) {
companion object { companion object {

Some files were not shown because too many files have changed in this diff Show More