Files
phishingclub/backend/database/apiSender.go
Ronni Skansing f6eb87fa2b OAuth providers
Signed-off-by: Ronni Skansing <rskansing@gmail.com>
2025-11-20 23:54:00 +01:00

60 lines
1.4 KiB
Go

package database
import (
"time"
"github.com/google/uuid"
"gorm.io/gorm"
)
const (
API_SENDER_TABLE = "api_senders"
)
type APISender struct {
ID *uuid.UUID `gorm:"primary_key;not null;unique;type:uuid"`
CreatedAt *time.Time `gorm:"not null;index;"`
UpdatedAt *time.Time `gorm:"not null;index"`
Name string `gorm:"not null;uniqueIndex:idx_api_senders_name_company_id;"`
CompanyID *uuid.UUID `gorm:"uniqueIndex:idx_api_senders_name_company_id;type:uuid"`
// Extra fields
APIKey string
CustomField1 string
CustomField2 string
CustomField3 string
CustomField4 string
// oauth provider for token-based authentication
OAuthProviderID *uuid.UUID `gorm:"type:uuid;index;"`
OAuthProvider *OAuthProvider `gorm:"foreignKey:OAuthProviderID"`
// Request fields
RequestMethod string
RequestURL string
RequestHeaders string
RequestBody string
// Response fields
ExpectedResponseStatusCode int
ExpectedResponseHeaders string
ExpectedResponseBody string
}
func (e *APISender) Migrate(db *gorm.DB) error {
// add o_auth_provider_id column if it doesn't exist
if !db.Migrator().HasColumn(&APISender{}, "o_auth_provider_id") {
if err := db.Migrator().AddColumn(&APISender{}, "OAuthProviderID"); err != nil {
return err
}
}
// SQLITE
// ensure name + null company id is unique
return UniqueIndexNameAndNullCompanyID(db, "api_senders")
}
func (APISender) TableName() string {
return API_SENDER_TABLE
}