2026-05-01 17:28:33 +00:00
|
|
|
package arcgis
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
2026-05-04 20:09:56 +00:00
|
|
|
"time"
|
2026-05-01 17:28:33 +00:00
|
|
|
|
2026-05-09 01:48:56 +00:00
|
|
|
"github.com/Gleipnir-Technology/jet/postgres"
|
2026-05-01 17:28:33 +00:00
|
|
|
"github.com/Gleipnir-Technology/nidus-sync/db"
|
|
|
|
|
"github.com/Gleipnir-Technology/nidus-sync/db/gen/nidus-sync/arcgis/model"
|
|
|
|
|
"github.com/Gleipnir-Technology/nidus-sync/db/gen/nidus-sync/arcgis/table"
|
|
|
|
|
)
|
|
|
|
|
|
2026-05-07 10:39:17 +00:00
|
|
|
func OAuthTokenInsert(ctx context.Context, m *model.OAuthToken) (model.OAuthToken, error) {
|
2026-05-01 17:28:33 +00:00
|
|
|
statement := table.OAuthToken.INSERT(table.OAuthToken.MutableColumns).
|
2026-05-07 16:38:42 +00:00
|
|
|
MODEL(m).
|
|
|
|
|
RETURNING(table.OAuthToken.AllColumns)
|
2026-05-01 17:28:33 +00:00
|
|
|
return db.ExecuteOne[model.OAuthToken](ctx, statement)
|
|
|
|
|
}
|
|
|
|
|
func OAuthTokenInvalidate(ctx context.Context, id int64) error {
|
|
|
|
|
statement := table.OAuthToken.UPDATE().
|
2026-05-04 20:09:56 +00:00
|
|
|
SET(table.OAuthToken.InvalidatedAt.SET(postgres.TimestampT(time.Now()))).
|
2026-05-01 17:28:33 +00:00
|
|
|
WHERE(table.OAuthToken.ID.EQ(postgres.Int(id)))
|
|
|
|
|
return db.ExecuteNone(ctx, statement)
|
|
|
|
|
}
|
2026-05-07 10:39:17 +00:00
|
|
|
func OAuthTokensValid(ctx context.Context) ([]model.OAuthToken, error) {
|
2026-05-01 17:28:33 +00:00
|
|
|
statement := table.OAuthToken.SELECT(table.OAuthToken.AllColumns).
|
|
|
|
|
FROM(table.OAuthToken).
|
|
|
|
|
WHERE(table.OAuthToken.InvalidatedAt.IS_NULL())
|
|
|
|
|
return db.ExecuteMany[model.OAuthToken](ctx, statement)
|
|
|
|
|
}
|
2026-05-07 10:39:17 +00:00
|
|
|
func OAuthTokenFromID(ctx context.Context, id int64) (model.OAuthToken, error) {
|
2026-05-01 17:28:33 +00:00
|
|
|
statement := table.OAuthToken.SELECT(
|
|
|
|
|
table.OAuthToken.AllColumns,
|
|
|
|
|
).FROM(table.OAuthToken).
|
|
|
|
|
WHERE(table.OAuthToken.ID.EQ(postgres.Int(id)))
|
|
|
|
|
return db.ExecuteOne[model.OAuthToken](ctx, statement)
|
|
|
|
|
}
|
2026-05-07 10:39:17 +00:00
|
|
|
func OAuthTokenForUser(ctx context.Context, user_id int64) (model.OAuthToken, error) {
|
2026-05-01 17:28:33 +00:00
|
|
|
statement := table.OAuthToken.SELECT(table.OAuthToken.AllColumns).
|
|
|
|
|
FROM(table.OAuthToken).
|
|
|
|
|
WHERE(table.OAuthToken.InvalidatedAt.IS_NULL().AND(
|
|
|
|
|
table.OAuthToken.UserID.EQ(postgres.Int(user_id)),
|
|
|
|
|
)).
|
|
|
|
|
ORDER_BY(table.OAuthToken.Created.DESC()).
|
|
|
|
|
LIMIT(1)
|
|
|
|
|
return db.ExecuteOne[model.OAuthToken](ctx, statement)
|
|
|
|
|
}
|
2026-05-07 10:39:17 +00:00
|
|
|
func OAuthTokensForUser(ctx context.Context, user_id int64) ([]model.OAuthToken, error) {
|
2026-05-01 17:28:33 +00:00
|
|
|
statement := table.OAuthToken.SELECT(table.OAuthToken.AllColumns).
|
|
|
|
|
FROM(table.OAuthToken).
|
|
|
|
|
WHERE(table.OAuthToken.InvalidatedAt.IS_NULL().AND(
|
|
|
|
|
table.OAuthToken.UserID.EQ(postgres.Int(user_id)),
|
|
|
|
|
))
|
|
|
|
|
return db.ExecuteMany[model.OAuthToken](ctx, statement)
|
|
|
|
|
}
|
2026-05-07 10:39:17 +00:00
|
|
|
func OAuthTokenForUserExists(ctx context.Context, user_id int64) (bool, error) {
|
2026-05-01 17:28:33 +00:00
|
|
|
statement := table.OAuthToken.SELECT(postgres.Bool(true)).
|
|
|
|
|
FROM(table.OAuthToken).
|
|
|
|
|
WHERE(table.OAuthToken.UserID.EQ(postgres.Int(user_id))).
|
|
|
|
|
LIMIT(1)
|
|
|
|
|
return db.ExecuteOne[bool](ctx, statement)
|
|
|
|
|
}
|
2026-05-07 10:39:17 +00:00
|
|
|
func OAuthTokenUpdateAccessToken(ctx context.Context, oauth_id int64, updates model.OAuthToken) error {
|
2026-05-01 17:28:33 +00:00
|
|
|
statement := table.OAuthToken.UPDATE(
|
|
|
|
|
table.OAuthToken.AccessToken,
|
|
|
|
|
table.OAuthToken.AccessTokenExpires,
|
|
|
|
|
table.OAuthToken.Username,
|
|
|
|
|
).MODEL(updates).
|
|
|
|
|
WHERE(table.OAuthToken.ID.EQ(postgres.Int(oauth_id)))
|
|
|
|
|
return db.ExecuteNone(ctx, statement)
|
|
|
|
|
}
|
2026-05-07 10:39:17 +00:00
|
|
|
func OAuthTokenUpdateRefreshToken(ctx context.Context, oauth_id int64, updates model.OAuthToken) error {
|
2026-05-01 17:28:33 +00:00
|
|
|
statement := table.OAuthToken.UPDATE(
|
|
|
|
|
table.OAuthToken.RefreshToken,
|
|
|
|
|
table.OAuthToken.RefreshTokenExpires,
|
|
|
|
|
table.OAuthToken.Username,
|
|
|
|
|
).MODEL(updates).
|
|
|
|
|
WHERE(table.OAuthToken.ID.EQ(postgres.Int(oauth_id)))
|
|
|
|
|
return db.ExecuteNone(ctx, statement)
|
|
|
|
|
|
|
|
|
|
}
|
2026-05-07 10:39:17 +00:00
|
|
|
func OAuthTokenUpdateLicense(ctx context.Context, refresh_token string, updates model.OAuthToken) error {
|
2026-05-01 17:28:33 +00:00
|
|
|
statement := table.OAuthToken.UPDATE(
|
|
|
|
|
table.OAuthToken.ArcgisID,
|
|
|
|
|
table.OAuthToken.ArcgisLicenseTypeID,
|
|
|
|
|
).MODEL(updates).
|
|
|
|
|
WHERE(table.OAuthToken.RefreshToken.EQ(postgres.String(refresh_token)))
|
|
|
|
|
return db.ExecuteNone(ctx, statement)
|
|
|
|
|
}
|