Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
27b9f1df4d
|
||
|
|
f916a552f6
|
||
|
|
9f5c4ed095
|
||
|
|
56aeac9e21
|
@@ -18,14 +18,14 @@ jobs:
|
|||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@v6
|
uses: actions/setup-go@v6
|
||||||
with:
|
with:
|
||||||
go-version: '1.26.1'
|
go-version: '1.25.3'
|
||||||
|
|
||||||
- name: Create version
|
- name: Create version
|
||||||
id: version
|
id: version
|
||||||
run: |
|
run: |
|
||||||
echo "Creating version"
|
echo "Creating version"
|
||||||
|
|
||||||
VERSION="0.2.0"
|
VERSION=$(git tag --sort=-version:refname | sed 's/-\(main\|devel\).*//' | uniq | head -n 1)
|
||||||
PROJECT_COMMIT_HASH=$(git rev-parse HEAD | cut -c 1-10)
|
PROJECT_COMMIT_HASH=$(git rev-parse HEAD | cut -c 1-10)
|
||||||
BRANCH_REF="${{ gitea.ref }}"
|
BRANCH_REF="${{ gitea.ref }}"
|
||||||
BRANCH_NAME=$(echo "$BRANCH_REF" | cut -d '/' -f 3)
|
BRANCH_NAME=$(echo "$BRANCH_REF" | cut -d '/' -f 3)
|
||||||
|
|||||||
@@ -11,13 +11,13 @@ jobs:
|
|||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@v6
|
uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: '1.26.1'
|
go-version: '1.25.3'
|
||||||
- name: Configure Git for SSH
|
- name: Configure Git for SSH
|
||||||
run: |
|
run: |
|
||||||
git config --global url."git@${{ secrets.GIT_HOST_ROOT }}:".insteadOf "https://${{ secrets.GIT_HOST_ROOT }}/"
|
git config --global url."git@git.kundeng.us:".insteadOf "https://git.kundeng.us/"
|
||||||
go env -w GOPRIVATE=${{ secrets.GIT_HOST_ROOT }}/phoenix/*
|
go env -w GOPRIVATE=git.kundeng.us/phoenix/*
|
||||||
|
|
||||||
- name: Download dependencies
|
- name: Download dependencies
|
||||||
run: |
|
run: |
|
||||||
@@ -25,3 +25,9 @@ jobs:
|
|||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: go test -v ./... # Runs all tests in the project
|
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,8 +1,8 @@
|
|||||||
module git.kundeng.us/phoenix/textsender-models
|
module git.kundeng.us/phoenix/textsender-models
|
||||||
|
|
||||||
go 1.26.1
|
go 1.25.3
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/golang-jwt/jwt/v5 v5.3.1
|
github.com/golang-jwt/jwt/v5 v5.3.0
|
||||||
github.com/google/uuid v1.6.0
|
github.com/google/uuid v1.6.0
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY=
|
github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo=
|
||||||
github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE=
|
github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE=
|
||||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
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/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package contact
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/google/uuid"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Contact struct {
|
||||||
|
PhoneNumber string `json:"phone_number,omitempty"`
|
||||||
|
UserId uuid.UUID `json:"user_id,omitempty"`
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
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"`
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
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"`
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
package auxiliary
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
)
|
|
||||||
|
|
||||||
type TwilioConfig struct {
|
|
||||||
AccountSID string `json:"auth_sid"`
|
|
||||||
ServiceSID string `json:"service_sid"`
|
|
||||||
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("Auth Token:", config.AuthToken)
|
|
||||||
fmt.Println("Number:", config.Number)
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
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"`
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
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"`
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
package event
|
|
||||||
|
|
||||||
const (
|
|
||||||
Message_Event_Response_Status_Instant = "INSTANT"
|
|
||||||
Message_Event_Response_Status_Scheduled = "SCHEDULED"
|
|
||||||
)
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
package message
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/google/uuid"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Message struct {
|
|
||||||
Id *uuid.UUID `json:"id,omitempty"`
|
|
||||||
Content string `json:"content"`
|
|
||||||
UserId *uuid.UUID `json:"user_id,omitempty"`
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
package scheduling
|
|
||||||
|
|
||||||
import (
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/google/uuid"
|
|
||||||
)
|
|
||||||
|
|
||||||
type ScheduledMessageEvent struct {
|
|
||||||
Id uuid.UUID `json:"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,15 +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"`
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
package scheduling
|
|
||||||
|
|
||||||
const (
|
|
||||||
Ready = "READY"
|
|
||||||
Pending = "PENDING"
|
|
||||||
Processing = "PROCESSING"
|
|
||||||
Done = "DONE"
|
|
||||||
)
|
|
||||||
@@ -1,24 +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 LoginResult struct {
|
|
||||||
UserId uuid.UUID `json:"user_id"`
|
|
||||||
AccessToken string `json:"access_token"`
|
|
||||||
TokenType string `json:"token_type"`
|
|
||||||
ExpiresIn int64 `json:"expires_in"`
|
|
||||||
IssuedAt int64 `json:"issued_at"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Alias for LoginResult
|
|
||||||
// Will be deprecated at some point
|
|
||||||
type Login = LoginResult
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"database/sql/driver"
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
)
|
|
||||||
|
|
||||||
// NOTE: Might end up removing this
|
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
package user
|
|
||||||
|
|
||||||
import (
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/google/uuid"
|
|
||||||
)
|
|
||||||
|
|
||||||
type ServiceUser struct {
|
|
||||||
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"`
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
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:"created"`
|
|
||||||
LastLogin *time.Time `json:"last_login,omitempty"`
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user