view pkg/imports/misc.go @ 2722:1c0307207162

Merged.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 19 Mar 2019 12:28:42 +0100
parents 542d3441c2d8
children a996f2ca9fa5
line wrap: on
line source

// SPDX-License-Identifier: AGPL-3.0-or-later
// License-Filename: LICENSES/AGPL-3.0.txt
//
// Copyright (C) 2018 by via donau
//   – Österreichische Wasserstraßen-Gesellschaft mbH
// Software engineering by Intevation GmbH
//
// Author(s):
//  * Sascha L. Teichmann <sascha.teichmann@intevation.de>

package imports

import (
	"context"
	"database/sql"
	"fmt"
	"strings"
)

type stringCounter map[string]int

func (sc stringCounter) String() string {
	var b strings.Builder
	for t, c := range sc {
		if b.Len() > 0 {
			b.WriteString(", ")
		}
		b.WriteString(fmt.Sprintf("%s: %d", t, c))
	}
	return b.String()
}

func Savepoint(
	ctx context.Context,
	tx *sql.Tx,
	name string,
) error {
	_, err := tx.ExecContext(ctx, "SAVEPOINT "+name)
	return err
}

func RollbackToSavepoint(
	ctx context.Context,
	tx *sql.Tx,
	name string,
) error {
	_, err := tx.ExecContext(ctx, "ROLLBACK TO SAVEPOINT "+name)
	return err
}

func ReleaseSavepoint(
	ctx context.Context,
	tx *sql.Tx,
	name string,
) error {
	_, err := tx.ExecContext(ctx, "RELEASE SAVEPOINT "+name)
	return err
}