| 
														
															@@ -3,7 +3,10 @@ package common 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import ( 
														 | 
														
														 | 
														
															 import ( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	"context" 
														 | 
														
														 | 
														
															 	"context" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	"database/sql" 
														 | 
														
														 | 
														
															 	"database/sql" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	"fmt" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	"regexp" 
														 | 
														
														 | 
														
															 	"regexp" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	"github.com/pkg/errors" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 ) 
														 | 
														
														 | 
														
															 ) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 type DBMethods struct { 
														 | 
														
														 | 
														
															 type DBMethods struct { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -12,6 +15,8 @@ type DBMethods struct { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	Driver string 
														 | 
														
														 | 
														
															 	Driver string 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+type qFunc func(ctx context.Context, tx *sql.Tx) error 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 var r = regexp.MustCompile(`\$\d+`) 
														 | 
														
														 | 
														
															 var r = regexp.MustCompile(`\$\d+`) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func (db *DBMethods) fixQuery(query string) string { 
														 | 
														
														 | 
														
															 func (db *DBMethods) fixQuery(query string) string { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -48,3 +53,17 @@ func (db *DBMethods) Query(ctx context.Context, query string, args ...any) (*sql 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func (db *DBMethods) QueryRow(ctx context.Context, query string, args ...any) *sql.Row { 
														 | 
														
														 | 
														
															 func (db *DBMethods) QueryRow(ctx context.Context, query string, args ...any) *sql.Row { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return db.DB.QueryRowContext(ctx, db.fixQuery(query), args...) 
														 | 
														
														 | 
														
															 	return db.DB.QueryRowContext(ctx, db.fixQuery(query), args...) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (db *DBMethods) Transaction(ctx context.Context, queries qFunc) error { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if queries == nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return fmt.Errorf("queries is not set for transaction") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	tx, err := db.Begin(ctx, nil) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err := queries(ctx, tx); err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return errors.Wrap(err, tx.Rollback().Error()) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return tx.Commit() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 |