2022-04-21 07:06:22 +00:00
package cassandradb
2022-03-19 12:11:27 +00:00
import (
2022-07-10 16:19:33 +00:00
"context"
2022-04-21 12:24:33 +00:00
"fmt"
2022-03-19 12:11:27 +00:00
"time"
"github.com/authorizerdev/authorizer/server/db/models"
2022-04-21 12:24:33 +00:00
"github.com/gocql/gocql"
2022-03-19 12:11:27 +00:00
"github.com/google/uuid"
)
// AddEnv to save environment information in database
2023-07-31 11:12:11 +00:00
func ( p * provider ) AddEnv ( ctx context . Context , env * models . Env ) ( * models . Env , error ) {
2022-03-19 12:11:27 +00:00
if env . ID == "" {
env . ID = uuid . New ( ) . String ( )
}
env . CreatedAt = time . Now ( ) . Unix ( )
env . UpdatedAt = time . Now ( ) . Unix ( )
2022-04-21 12:24:33 +00:00
insertEnvQuery := fmt . Sprintf ( "INSERT INTO %s (id, env, hash, created_at, updated_at) VALUES ('%s', '%s', '%s', %d, %d)" , KeySpace + "." + models . Collections . Env , env . ID , env . EnvData , env . Hash , env . CreatedAt , env . UpdatedAt )
err := p . db . Query ( insertEnvQuery ) . Exec ( )
if err != nil {
2024-04-02 09:55:11 +00:00
return nil , err
2022-04-21 12:24:33 +00:00
}
2022-03-19 12:11:27 +00:00
return env , nil
}
// UpdateEnv to update environment information in database
2023-07-31 11:12:11 +00:00
func ( p * provider ) UpdateEnv ( ctx context . Context , env * models . Env ) ( * models . Env , error ) {
2022-03-19 12:11:27 +00:00
env . UpdatedAt = time . Now ( ) . Unix ( )
2022-04-21 12:24:33 +00:00
updateEnvQuery := fmt . Sprintf ( "UPDATE %s SET env = '%s', updated_at = %d WHERE id = '%s'" , KeySpace + "." + models . Collections . Env , env . EnvData , env . UpdatedAt , env . ID )
err := p . db . Query ( updateEnvQuery ) . Exec ( )
if err != nil {
2024-04-02 09:55:11 +00:00
return nil , err
2022-04-21 12:24:33 +00:00
}
2022-03-19 12:11:27 +00:00
return env , nil
}
// GetEnv to get environment information from database
2023-07-31 11:12:11 +00:00
func ( p * provider ) GetEnv ( ctx context . Context ) ( * models . Env , error ) {
2023-08-01 10:39:17 +00:00
var env models . Env
2022-04-21 12:24:33 +00:00
query := fmt . Sprintf ( "SELECT id, env, hash, created_at, updated_at FROM %s LIMIT 1" , KeySpace + "." + models . Collections . Env )
err := p . db . Query ( query ) . Consistency ( gocql . One ) . Scan ( & env . ID , & env . EnvData , & env . Hash , & env . CreatedAt , & env . UpdatedAt )
if err != nil {
2023-08-01 10:39:17 +00:00
return nil , err
2022-04-21 12:24:33 +00:00
}
2023-08-01 10:39:17 +00:00
return & env , nil
2022-03-19 12:11:27 +00:00
}