Compare commits

...
Author SHA1 Message Date
phoenix 404ad1594b Version bump 2025-12-22 17:13:52 -05:00
phoenix bad958a592 Code formatting 2025-12-22 14:24:51 -05:00
phoenix 7915171bb2 Made values of constant uppercase and changed type of field 2025-12-22 14:24:33 -05:00
phoenixandphoenix f9b55b6bb7 tsk-15: Add User Id to LoginResult (#21)
Closes #15

Reviewed-on: phoenix/textsender-models#21
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-12-16 02:58:11 +00:00
phoenixandphoenix 245ff35e58 tsk-14: User improvements (#20)
Closes #14

Reviewed-on: phoenix/textsender-models#20
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-12-16 02:38:30 +00:00
phoenixandphoenix c4d195df4b tsk-13: Fix typo in TwilioConfig (#19)
Closes #13

Reviewed-on: phoenix/textsender-models#19
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-12-16 02:16:38 +00:00
phoenixandphoenix 8f7198ed7c tsk-12: Contact improvements (#18)
Closes #12

Reviewed-on: phoenix/textsender-models#18
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-12-15 20:58:47 +00:00
phoenixandphoenix 6bc3870698 tsk-11: Expand MessageEventResponse (#17)
Closes #11

Reviewed-on: phoenix/textsender-models#17
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-12-15 20:09:40 +00:00
phoenixandphoenix da53b1a913 Add MessageEventResponse (#10)
Reviewed-on: phoenix/textsender-models#10
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-12-01 18:55:15 +00:00
phoenixandphoenix 14ddd3bc9c tsk-8: Renamed pkg (#9)
Closes #8

Reviewed-on: phoenix/textsender-models#9
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-11-27 00:55:20 +00:00
phoenixandphoenix fbaa9a48f3 Go version upgrade (#7)
Reviewed-on: phoenix/textsender-models#7
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-11-24 19:46:16 +00:00
phoenixandphoenix 3ab81c2b6d Service user (#6)
Reviewed-on: phoenix/textsender-models#6
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-11-20 19:07:36 +00:00
phoenixandphoenix 5bfcb8e74b TwilioConfig (#5)
Reviewed-on: phoenix/textsender-models#5
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-11-14 19:15:05 +00:00
phoenixandphoenix 28b29802b9 Scheduled message add event (#4)
Reviewed-on: phoenix/textsender-models#4
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-11-09 18:47:46 +00:00
19 changed files with 203 additions and 81 deletions
+2 -2
View File
@@ -18,14 +18,14 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.25.3'
go-version: '1.25.4'
- name: Create version
id: version
run: |
echo "Creating version"
VERSION="0.0.5"
VERSION="0.0.12"
PROJECT_COMMIT_HASH=$(git rev-parse HEAD | cut -c 1-10)
BRANCH_REF="${{ gitea.ref }}"
BRANCH_NAME=$(echo "$BRANCH_REF" | cut -d '/' -f 3)
+4 -10
View File
@@ -11,13 +11,13 @@ jobs:
uses: actions/checkout@v5
- name: Set up Go
uses: actions/setup-go@v4
uses: actions/setup-go@v6
with:
go-version: '1.25.3'
go-version: '1.25.4'
- name: Configure Git for SSH
run: |
git config --global url."git@git.kundeng.us:".insteadOf "https://git.kundeng.us/"
go env -w GOPRIVATE=git.kundeng.us/phoenix/*
git config --global url."git@${{ secrets.GIT_HOST_ROOT }}:".insteadOf "https://${{ secrets.GIT_HOST_ROOT }}/"
go env -w GOPRIVATE=${{ secrets.GIT_HOST_ROOT }}/phoenix/*
- name: Download dependencies
run: |
@@ -25,9 +25,3 @@ jobs:
- name: Run tests
run: go test -v ./... # Runs all tests in the project
- name: Run linter
uses: https://github.com/golangci/golangci-lint-action@v8
with:
go-version: '1.25.3'
version: latest
+1 -1
View File
@@ -1,6 +1,6 @@
module git.kundeng.us/phoenix/textsender-models
go 1.25.3
go 1.25.4
require (
github.com/golang-jwt/jwt/v5 v5.3.0
-11
View File
@@ -1,11 +0,0 @@
package contact
import (
"github.com/google/uuid"
)
type Contact struct {
Id uuid.UUID `json:"id,omitempty"`
PhoneNumber string `json:"phone_number,omitempty"`
UserId uuid.UUID `json:"user_id,omitempty"`
}
-16
View File
@@ -1,16 +0,0 @@
package scheduling
import (
"time"
"github.com/google/uuid"
)
type ScheduledMessage struct {
Id uuid.UUID `json:"id"`
Scheduled time.Time `json:"scheduled"`
Created time.Time `json:"created"`
Status string `json:"status"`
UserId uuid.UUID `json:"user_id"`
}
-9
View File
@@ -1,9 +0,0 @@
package scheduling
const (
Ready = "READY"
Pending = "PENDING"
Processing = "PROCESSING"
Done = "DONE"
)
-18
View File
@@ -1,18 +0,0 @@
package token
import (
"github.com/golang-jwt/jwt/v5"
"github.com/google/uuid"
)
type Claims struct {
UserId uuid.UUID `json:"user_id"`
Role string `json:"role"`
jwt.RegisteredClaims
}
type Login struct {
AccessToken string `json:"access_token"`
TokenType string `json:"token_type"`
ExpiresIn int64 `json:"expires_in"`
}
-13
View File
@@ -1,13 +0,0 @@
package user
import (
"github.com/google/uuid"
)
type User struct {
Id uuid.UUID `json:"id"`
PhoneNumber string `json:"phone_number"`
Username string `json:"username"`
Password string `json:"password"`
}
+22
View File
@@ -0,0 +1,22 @@
package config
import (
"fmt"
)
type TwilioConfig struct {
AccountSID string `json:"auth_sid"`
ServiceSID string `json:"service_sid"`
URI string `json:"uri"`
AuthToken string `json:"auth_token"`
Number string `json:"phone_number"`
}
func (config *TwilioConfig) PrintConfig() {
fmt.Println("Twilio config")
fmt.Println("Account SID:", config.AccountSID)
fmt.Println("Service SID:", config.ServiceSID)
fmt.Println("URI:", config.URI)
fmt.Println("Auth Token:", config.AuthToken)
fmt.Println("Number:", config.Number)
}
+14
View File
@@ -0,0 +1,14 @@
package contact
import (
"github.com/google/uuid"
)
type Contact struct {
Id *uuid.UUID `json:"id,omitempty"`
Firstname *string `json:"first_name,omitempty"`
Lastname *string `json:"last_name,omitempty"`
Nickname *string `json:"nickname,omitempty"`
PhoneNumber string `json:"phone_number"`
UserId *uuid.UUID `json:"user_id,omitempty"`
}
@@ -6,6 +6,6 @@ import (
type Message struct {
Id uuid.UUID `json:"id"`
Content string `json:"content"`
Content string `json:"content,omitempty"`
UserId uuid.UUID `json:"user_id"`
}
+25
View File
@@ -0,0 +1,25 @@
package message
import (
"time"
"github.com/google/uuid"
"git.kundeng.us/phoenix/textsender-models/tx0/types"
)
type MessageEventResponse struct {
Id uuid.UUID `json:"id,omitempty"`
ScheduledMessageEventId uuid.UUID `json:"scheduled_message_event_id,omitempty"`
Response types.JSONB `json:"response"`
UserId uuid.UUID `json:"user_id,omitempty"`
ContactId *uuid.UUID `json:"contact_id,omitempty"`
MessageId *uuid.UUID `json:"message_id,omitempty"`
Status string `json:"status"`
Sent time.Time `json:"sent"`
}
const (
Message_Event_Response_Status_Instant = "INSTANT"
Message_Event_Response_Status_Scheduled = "SCHEDULED"
)
+15
View File
@@ -0,0 +1,15 @@
package scheduling
import (
"time"
"github.com/google/uuid"
)
type ScheduledMessageEvent struct {
Id uuid.UUID `json:"id"`
RecipientId uuid.UUID `json:"recipient_id"`
MessageId uuid.UUID `json:"message_id"`
ScheduledMessageId uuid.UUID `json:"scheduled_message_id"`
Created time.Time `json:"created"`
}
+15
View File
@@ -0,0 +1,15 @@
package scheduling
import (
"time"
"github.com/google/uuid"
)
type ScheduledMessage struct {
Id uuid.UUID `json:"id"`
Scheduled time.Time `json:"scheduled"`
Created time.Time `json:"created"`
Status string `json:"status"`
UserId uuid.UUID `json:"user_id"`
}
+8
View File
@@ -0,0 +1,8 @@
package scheduling
const (
Ready = "READY"
Pending = "PENDING"
Processing = "PROCESSING"
Done = "DONE"
)
+23
View File
@@ -0,0 +1,23 @@
package token
import (
"github.com/golang-jwt/jwt/v5"
"github.com/google/uuid"
)
type Claims struct {
UserId uuid.UUID `json:"user_id"`
Role string `json:"role"`
jwt.RegisteredClaims
}
type LoginResult struct {
UserId uuid.UUID `json:"user_id"`
AccessToken string `json:"access_token"`
TokenType string `json:"token_type"`
ExpiresIn int64 `json:"expires_in"`
}
// Alias for LoginResult
// Will be deprecated at some point
type Login = LoginResult
+41
View File
@@ -0,0 +1,41 @@
package types
import (
"database/sql/driver"
"encoding/json"
"fmt"
)
type JSONB json.RawMessage
// Scan implements sql.Scanner
func (j *JSONB) Scan(value interface{}) error {
if value == nil {
*j = nil
return nil
}
var data []byte
switch v := value.(type) {
case []byte:
// pgx may pass data as []byte in binary format
data = v
case string:
// pgx may pass data as string in text format
data = []byte(v)
default:
return fmt.Errorf("unsupported type: %T", v)
}
*j = JSONB(data)
return nil
}
// Value implements driver.Valuer
func (j JSONB) Value() (driver.Value, error) {
if j == nil {
return nil, nil
} else {
return []byte(j), nil
}
}
+14
View File
@@ -0,0 +1,14 @@
package user
import (
"time"
"github.com/google/uuid"
)
type ServiceUser struct {
Id uuid.UUID `json:"id"`
Username string `json:"username,omitempty"`
Passphrase string `json:"passphrase,omitempty"`
Created time.Time `json:"date_created"`
}
+18
View File
@@ -0,0 +1,18 @@
package user
import (
"time"
"github.com/google/uuid"
)
type User struct {
Id uuid.UUID `json:"id"`
PhoneNumber string `json:"phone_number"`
Username string `json:"username"`
Password string `json:"password"`
Firstname *string `json:"first_name,omitempty"`
Lastname *string `json:"last_name,omitempty"`
Created time.Time `json:"date_created"`
LastLogin *time.Time `json:"last_login,omitempty"`
}