package main import ( "context" "atlas9.dev/c/core" "atlas9.dev/c/core/dbi" "atlas9.dev/c/core/iam" ) type SqlitePasswordHashStore struct { db dbi.DBI } var _ iam.PasswordStore = (*SqlitePasswordHashStore)(nil) func NewSqlitePasswordHashStore(db dbi.DBI) *SqlitePasswordHashStore { return &SqlitePasswordHashStore{db: db} } func (s *SqlitePasswordHashStore) SetHash(ctx context.Context, userID core.ID, hash iam.PasswordHash) error { _, err := s.db.Exec(ctx, ` INSERT INTO password_hashes (user_id, hash) VALUES ($1, $2) ON CONFLICT (user_id) DO UPDATE SET hash = EXCLUDED.hash `, userID, hash) return err } func (s *SqlitePasswordHashStore) GetHash(ctx context.Context, userID core.ID) (iam.PasswordHash, error) { var hash iam.PasswordHash err := dbi.Get(ctx, s.db, &hash, `SELECT hash FROM password_hashes WHERE user_id = $1`, userID) return hash, err }