package oauth2 import "time" // OAuthClient oauth_client type OAuthClient struct { ID string `gorm:"primaryKey;type:varchar(36)"` ClientID string `gorm:"size:64;not null;uniqueIndex"` ClientSecretHash *string `gorm:"size:255"` RedirectURIsJSON string `gorm:"column:redirect_uris;type:text;not null"` IsPublic bool `gorm:"not null;default:true"` CreatedAt time.Time `gorm:"not null"` } func (OAuthClient) TableName() string { return "oauth_client" } // OAuthAuthorizationCode oauth_authorization_code type OAuthAuthorizationCode struct { ID string `gorm:"primaryKey;type:varchar(36)"` CodeHash string `gorm:"size:64;not null;uniqueIndex"` ClientID string `gorm:"size:64;not null"` RedirectURI string `gorm:"type:text;not null"` UserID string `gorm:"size:36;not null"` TenantID string `gorm:"size:36;not null"` Scope string `gorm:"type:text;not null"` CodeChallenge string `gorm:"size:128;not null"` CodeChallengeMethod string `gorm:"size:16;not null"` ExpiresAt time.Time `gorm:"not null"` Used bool `gorm:"not null;default:false"` CreatedAt time.Time `gorm:"not null"` } func (OAuthAuthorizationCode) TableName() string { return "oauth_authorization_code" } // OAuthAccessToken oauth_access_token type OAuthAccessToken struct { ID string `gorm:"primaryKey;type:varchar(36)"` TokenHash string `gorm:"size:64;not null;uniqueIndex"` ClientID string `gorm:"size:64;not null"` UserID string `gorm:"size:36;not null"` TenantID string `gorm:"size:36;not null"` Scope string `gorm:"type:text;not null"` ExpiresAt time.Time `gorm:"not null"` RevokedAt *time.Time `gorm:""` CreatedAt time.Time `gorm:"not null"` } func (OAuthAccessToken) TableName() string { return "oauth_access_token" } // OAuthRefreshToken oauth_refresh_token type OAuthRefreshToken struct { ID string `gorm:"primaryKey;type:varchar(36)"` TokenHash string `gorm:"size:64;not null;uniqueIndex"` AccessTokenID string `gorm:"size:36;not null;index"` ClientID string `gorm:"size:64;not null"` UserID string `gorm:"size:36;not null"` TenantID string `gorm:"size:36;not null"` Scope string `gorm:"type:text;not null"` ExpiresAt time.Time `gorm:"not null"` RevokedAt *time.Time `gorm:""` CreatedAt time.Time `gorm:"not null"` } func (OAuthRefreshToken) TableName() string { return "oauth_refresh_token" }