Compare commits

...
Author SHA1 Message Date
phoenix ec95780487 bump: textsender-models
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Successful in 7s
Go CI / Test and Lint (push) Successful in 17s
2026-05-27 22:57:50 -04:00
phoenix dc2eeb3bf8 go fmt 2026-05-27 22:56:52 -04:00
phoenix 446583d705 Whoops
Go CI / Test and Lint (push) Successful in 6s
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Successful in 6s
2026-05-27 22:56:03 -04:00
phoenix 8544a69eb1 Changing type of fields
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Failing after 7s
Go CI / Test and Lint (push) Failing after 17s
2026-05-27 22:55:31 -04:00
phoenix 894e1387de Fix
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Successful in 7s
Go CI / Test and Lint (push) Successful in 17s
2026-05-27 22:53:20 -04:00
phoenix 6f90428975 Fixed issue
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Failing after 7s
Go CI / Test and Lint (push) Failing after 17s
2026-05-27 22:50:56 -04:00
phoenix c3ec0731b2 Added comments to fields
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Failing after 6s
Go CI / Test and Lint (push) Failing after 17s
2026-05-27 22:49:59 -04:00
phoenix 413d9baffd Fix
Go Release / build-and-release (pull_request) Successful in 5s
Go CI / Test and Lint (pull_request) Failing after 6s
Go CI / Test and Lint (push) Failing after 17s
2026-05-27 22:49:40 -04:00
phoenix 87a437311b Test fix 2026-05-27 22:49:30 -04:00
phoenix 2820cdfed6 Fixed error
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (push) Failing after 16s
Go CI / Test and Lint (pull_request) Failing after 6s
2026-05-27 22:47:21 -04:00
phoenix b230b7e0d9 Added missing imports
Go CI / Test and Lint (push) Failing after 6s
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Failing after 6s
2026-05-27 22:46:26 -04:00
phoenix 897ac80b96 Tweaked UserProfile
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Failing after 6s
Go CI / Test and Lint (push) Failing after 17s
2026-05-27 22:44:12 -04:00
phoenix 509b9d58a5 Merge branch 'main' of git.kundeng.us:phoenix/textsender-models into user_profile
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Successful in 7s
Go CI / Test and Lint (push) Successful in 17s
2026-05-27 22:38:20 -04:00
phoenix 5b36e5c42e Login History (#2)
Go Release / build-and-release (push) Successful in 6s
Go CI / Test and Lint (push) Successful in 12s
Reviewed-on: phoenix/textsender-models#2
2026-05-26 22:08:05 -04:00
phoenix e459183747 go fmt
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Successful in 6s
Go CI / Test and Lint (push) Successful in 16s
2026-05-25 22:46:26 -04:00
phoenix 19d074d3d7 Added todo
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Successful in 6s
Go CI / Test and Lint (push) Successful in 17s
2026-05-25 22:46:00 -04:00
phoenix 209e1428d8 Syntax fix
Go CI / Test and Lint (push) Successful in 6s
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Successful in 6s
2026-05-25 22:43:20 -04:00
phoenix 97591d99b5 Updated test
Go CI / Test and Lint (push) Failing after 6s
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Failing after 6s
2026-05-25 22:42:40 -04:00
phoenix 587f9a05af -m: Test fix
Go CI / Test and Lint (push) Failing after 6s
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Failing after 6s
2026-05-25 22:41:49 -04:00
phoenix b130f6e069 Test fix
Go CI / Test and Lint (push) Failing after 6s
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Failing after 6s
2026-05-25 22:39:37 -04:00
phoenix e74dd82211 Code refactoring
Go Release / build-and-release (pull_request) Successful in 7s
Go CI / Test and Lint (pull_request) Failing after 6s
Go CI / Test and Lint (push) Failing after 17s
2026-05-25 22:36:59 -04:00
phoenix 8cfccc2722 Test fix
Go CI / Test and Lint (push) Successful in 6s
Go CI / Test and Lint (pull_request) Successful in 17s
Go Release / build-and-release (pull_request) Successful in 6s
2026-05-25 22:31:18 -04:00
phoenix 801a314421 Test fix
Go CI / Test and Lint (push) Failing after 16s
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Failing after 6s
2026-05-25 22:30:21 -04:00
phoenix 9565259dc1 Test fix
Go CI / Test and Lint (push) Failing after 6s
Go Release / build-and-release (pull_request) Successful in 5s
Go CI / Test and Lint (pull_request) Failing after 7s
2026-05-25 22:26:38 -04:00
phoenix f05a513926 Created test file
Go CI / Test and Lint (push) Failing after 6s
Go Release / build-and-release (pull_request) Successful in 5s
Go CI / Test and Lint (pull_request) Failing after 6s
2026-05-25 22:24:06 -04:00
phoenix 39ecf052a0 Added assert
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (push) Successful in 17s
Go CI / Test and Lint (pull_request) Successful in 16s
2026-05-25 22:22:18 -04:00
phoenix 2b5cb3a093 Test fixes
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Failing after 6s
Go CI / Test and Lint (push) Failing after 12s
2026-05-25 22:21:14 -04:00
phoenix c2cde15189 Added test
Go CI / Test and Lint (push) Failing after 5s
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Failing after 5s
2026-05-25 22:18:02 -04:00
phoenix b8e8621e0d Build fix
Go CI / Test and Lint (push) Successful in 5s
Go Release / build-and-release (pull_request) Successful in 5s
Go CI / Test and Lint (pull_request) Successful in 5s
2026-05-25 22:12:58 -04:00
phoenix 0bf24d929c Build fix
Go CI / Test and Lint (push) Failing after 6s
Go Release / build-and-release (pull_request) Successful in 7s
Go CI / Test and Lint (pull_request) Failing after 5s
2026-05-25 22:12:07 -04:00
phoenix dcbc2609c4 -m: Added UserProfile
Go Release / build-and-release (pull_request) Successful in 6s
Go CI / Test and Lint (pull_request) Failing after 5s
Go CI / Test and Lint (push) Failing after 50s
2026-05-25 22:10:14 -04:00
phoenixandphoenix f7baac328a update go (#43)
Go CI / Test and Lint (push) Successful in 6s
Reviewed-on: phoenix/textsender-models#43
Co-authored-by: phoenix <mail@kundeng.us>
Co-committed-by: phoenix <mail@kundeng.us>
2026-05-03 16:01:35 -04:00
phoenixandphoenix c857772953 Update go version (#42)
Reviewed-on: phoenix/textsender-models#42
Co-authored-by: phoenix <mail@kundeng.us>
Co-committed-by: phoenix <mail@kundeng.us>
2026-04-03 22:01:08 -04:00
phoenix ec371ec86b Breaking changes (#30)
Reviewed-on: phoenix/textsender-models#30
2026-01-01 20:33:38 +00:00
phoenixandphoenix f4e2336771 tsk-39: Rename RecipientId in scheduling.ScheduledMessageEvent (#40)
Closes #39

Reviewed-on: phoenix/textsender-models#40
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-12-31 23:24:02 +00:00
phoenixandphoenix 6f9e112b72 tsk-37: Add last login to service user (#38)
Closes #37

Reviewed-on: phoenix/textsender-models#38
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-12-31 22:38:39 +00:00
phoenixandphoenix 7c21f243ed tsk-33: Put TwilioConfig in its own package (#36)
Closes #33

Reviewed-on: phoenix/textsender-models#36
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-12-31 22:27:57 +00:00
phoenixandphoenix 7db9914bc4 tsk-29: Change type of Response from MessageEventResponse (#35)
Closes #29

Reviewed-on: phoenix/textsender-models#35
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-12-31 22:22:46 +00:00
phoenixandphoenix 564a3936e3 tsk-26: Put MessageEventResponse statuses in their own file (#34)
Closes #26

Reviewed-on: phoenix/textsender-models#34
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-12-31 22:15:32 +00:00
phoenixandphoenix 44848fdffd tsk-25: Change time references (#32)
Closes #25

Reviewed-on: phoenix/textsender-models#32
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-12-31 22:07:06 +00:00
phoenixandphoenix e894925996 tsk-23: Message enhancements (#31)
Closes #23

Reviewed-on: phoenix/textsender-models#31
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-12-31 21:52:47 +00:00
16 changed files with 145 additions and 49 deletions
+2 -2
View File
@@ -18,14 +18,14 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.25.4'
go-version: '1.26.2'
- name: Create version
id: version
run: |
echo "Creating version"
VERSION="0.0.14"
VERSION="0.2.3"
PROJECT_COMMIT_HASH=$(git rev-parse HEAD | cut -c 1-10)
BRANCH_REF="${{ gitea.ref }}"
BRANCH_NAME=$(echo "$BRANCH_REF" | cut -d '/' -f 3)
+1 -1
View File
@@ -13,7 +13,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.25.4'
go-version: '1.26.2'
- name: Configure Git for SSH
run: |
git config --global url."git@${{ secrets.GIT_HOST_ROOT }}:".insteadOf "https://${{ secrets.GIT_HOST_ROOT }}/"
+9 -2
View File
@@ -1,8 +1,15 @@
module git.kundeng.us/phoenix/textsender-models
go 1.25.4
go 1.26.2
require (
github.com/golang-jwt/jwt/v5 v5.3.0
github.com/golang-jwt/jwt/v5 v5.3.1
github.com/google/uuid v1.6.0
github.com/stretchr/testify v1.11.1
)
require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
+12 -2
View File
@@ -1,4 +1,14 @@
github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo=
github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY=
github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
@@ -1,4 +1,4 @@
package config
package auxiliary
import (
"fmt"
+18
View File
@@ -0,0 +1,18 @@
package event
import (
"time"
"github.com/google/uuid"
)
type MessageEventResponse struct {
Id uuid.UUID `json:"id,omitempty"`
ScheduledMessageEventId uuid.UUID `json:"scheduled_message_event_id,omitempty"`
Response map[string]any `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"`
}
+6
View File
@@ -0,0 +1,6 @@
package event
const (
Message_Event_Response_Status_Instant = "INSTANT"
Message_Event_Response_Status_Scheduled = "SCHEDULED"
)
+3 -3
View File
@@ -5,7 +5,7 @@ import (
)
type Message struct {
Id uuid.UUID `json:"id"`
Content string `json:"content,omitempty"`
UserId uuid.UUID `json:"user_id"`
Id *uuid.UUID `json:"id,omitempty"`
Content string `json:"content"`
UserId *uuid.UUID `json:"user_id,omitempty"`
}
-25
View File
@@ -1,25 +0,0 @@
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"
)
+1 -1
View File
@@ -8,7 +8,7 @@ import (
type ScheduledMessageEvent struct {
Id uuid.UUID `json:"id"`
RecipientId uuid.UUID `json:"recipient_id"`
ContactId uuid.UUID `json:"contact_id"`
MessageId uuid.UUID `json:"message_id"`
ScheduledMessageId uuid.UUID `json:"scheduled_message_id"`
Created time.Time `json:"created"`
+1
View File
@@ -6,6 +6,7 @@ import (
"fmt"
)
// NOTE: Might end up removing this
type JSONB json.RawMessage
// Scan implements sql.Scanner
+18
View File
@@ -0,0 +1,18 @@
package user
import (
"github.com/google/uuid"
"time"
)
type UserLoginHistory struct {
Id uuid.UUID `json:"id"`
LoginTime time.Time `json:"login_time"`
UserId uuid.UUID `json:"user_id"`
}
type ServiceUserLoginHistory struct {
Id uuid.UUID `json:"id"`
LoginTime time.Time `json:"login_time"`
ServiceUserId uuid.UUID `json:"service_user_id"`
}
+6 -4
View File
@@ -7,8 +7,10 @@ import (
)
type ServiceUser struct {
Id uuid.UUID `json:"id"`
Username string `json:"username,omitempty"`
Passphrase string `json:"passphrase,omitempty"`
Created time.Time `json:"date_created"`
Id uuid.UUID `json:"id"`
// TODO: Remove the omitempty tags at a later point
Username string `json:"username,omitempty"`
Passphrase string `json:"passphrase,omitempty"`
Created time.Time `json:"created"`
LastLogin *time.Time `json:"last_login,omitempty"`
}
+10 -8
View File
@@ -7,12 +7,14 @@ import (
)
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"`
Id uuid.UUID `json:"id"`
PhoneNumber string `json:"phone_number"`
Username string `json:"username"`
Password string `json:"password"`
// Firstname is a pointer
Firstname *string `json:"first_name,omitempty"`
// Lastname is a pointer
Lastname *string `json:"last_name,omitempty"`
Created time.Time `json:"created"`
LastLogin *time.Time `json:"last_login,omitempty"`
}
+41
View File
@@ -0,0 +1,41 @@
package user
import (
"fmt"
"time"
"github.com/google/uuid"
)
type UserProfile struct {
UserId uuid.UUID `json:"user_id"`
PhoneNumber string `json:"phone_number"`
Username string `json:"username"`
Firstname *string `json:"firstname,omitempty"`
Lastname *string `json:"lastname,omitempty"`
Created time.Time `json:"created"`
LastLogin *time.Time `json:"last_login,omitempty"`
}
func InitUserProfile(usr *User) (usrProfile *UserProfile, err error) {
if usr == nil {
return nil, fmt.Errorf("User is empty")
} else {
usrProfile = new(UserProfile)
usrProfile.UserId = usr.Id
usrProfile.PhoneNumber = usr.PhoneNumber
usrProfile.Username = usr.Username
if usr.Firstname != nil {
usrProfile.Firstname = usr.Firstname
}
if usr.Lastname != nil {
usrProfile.Lastname = usr.Lastname
}
usrProfile.Created = usr.Created
if usr.LastLogin != nil {
usrProfile.LastLogin = usr.LastLogin
}
return usrProfile, nil
}
}
+16
View File
@@ -0,0 +1,16 @@
package user
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestInitUserProfile(t *testing.T) {
usr := User{Username: "Bob", PhoneNumber: "+12224572351", Password: "TheNight!"}
profile, err := InitUserProfile(&usr)
assert.NoError(t, err, "Error %v", err)
assert.NotEmpty(t, profile, "UserProfile is empty")
}