Skip to content

Commit

Permalink
comment
Browse files Browse the repository at this point in the history
  • Loading branch information
mstgnz committed Dec 28, 2024
1 parent d13ffb4 commit 7b9bbbe
Show file tree
Hide file tree
Showing 7 changed files with 25 additions and 51 deletions.
13 changes: 0 additions & 13 deletions cmd/sqlmapper/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,64 +15,54 @@ import (
"github.com/mstgnz/sqlmapper/sqlserver"
)

// main fonksiyonu, programın ana giriş noktasıdır
func main() {
// Komut satırı parametrelerini tanımla
filePath := flag.String("file", "", "SQL dump dosyasının yolu")
targetDB := flag.String("to", "", "Hedef veritabanı tipi (mysql, postgres, sqlite, oracle, sqlserver)")
flag.Parse()

// Parametreleri kontrol et
if *filePath == "" || *targetDB == "" {
fmt.Println("Kullanım: sqlmapper --file=<dosya_yolu> --to=<hedef_db>")
fmt.Println("Örnek: sqlmapper --file=postgres.sql --to=mysql")
flag.PrintDefaults()
os.Exit(1)
}

// Dosyayı oku
content, err := os.ReadFile(*filePath)
if err != nil {
fmt.Printf("Dosya okuma hatası: %v\n", err)
os.Exit(1)
}

// Kaynak veritabanı tipini dosya içeriğinden tespit et
sourceType := detectSourceType(string(content))
if sourceType == "" {
fmt.Println("Kaynak veritabanı tipi tespit edilemedi")
os.Exit(1)
}

// Kaynak parser'ı oluştur
sourceParser := createParser(sourceType)
if sourceParser == nil {
fmt.Printf("Desteklenmeyen kaynak veritabanı tipi: %s\n", sourceType)
os.Exit(1)
}

// Hedef parser'ı oluştur
targetParser := createParser(*targetDB)
if targetParser == nil {
fmt.Printf("Desteklenmeyen hedef veritabanı tipi: %s\n", *targetDB)
os.Exit(1)
}

// SQL'i parse et
schema, err := sourceParser.Parse(string(content))
if err != nil {
fmt.Printf("Parse hatası: %v\n", err)
os.Exit(1)
}

// Hedef SQL'i oluştur
result, err := targetParser.Generate(schema)
if err != nil {
fmt.Printf("SQL oluşturma hatası: %v\n", err)
os.Exit(1)
}

// Çıktı dosyasını oluştur
outputPath := createOutputPath(*filePath, *targetDB)
err = os.WriteFile(outputPath, []byte(result), 0644)
if err != nil {
Expand All @@ -83,7 +73,6 @@ func main() {
fmt.Printf("Dönüşüm başarılı! Çıktı dosyası: %s\n", outputPath)
}

// detectSourceType fonksiyonu, verilen SQL içeriğinden veritabanı tipini tespit eder
func detectSourceType(content string) string {
content = strings.ToUpper(content)
switch {
Expand All @@ -102,7 +91,6 @@ func detectSourceType(content string) string {
}
}

// createParser fonksiyonu, belirtilen veritabanı tipi için uygun parser'ı oluşturur
func createParser(dbType string) sqlmapper.Parser {
switch strings.ToLower(dbType) {
case "mysql":
Expand All @@ -120,7 +108,6 @@ func createParser(dbType string) sqlmapper.Parser {
}
}

// createOutputPath fonksiyonu, girdi dosyası ve hedef veritabanı tipine göre çıktı dosyası yolunu oluşturur
func createOutputPath(inputPath, targetDB string) string {
dir := filepath.Dir(inputPath)
filename := filepath.Base(inputPath)
Expand Down
13 changes: 0 additions & 13 deletions cmd/sqlmapper/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"testing"
)

// TestDetectSourceType veritabanı tipini tespit etme fonksiyonunu test eder
func TestDetectSourceType(t *testing.T) {
tests := []struct {
name string
Expand Down Expand Up @@ -54,7 +53,6 @@ func TestDetectSourceType(t *testing.T) {
}
}

// TestCreateOutputPath çıktı dosyası yolu oluşturma fonksiyonunu test eder
func TestCreateOutputPath(t *testing.T) {
tests := []struct {
name string
Expand Down Expand Up @@ -91,7 +89,6 @@ func TestCreateOutputPath(t *testing.T) {
}
}

// TestCreateParser parser oluşturma fonksiyonunu test eder
func TestCreateParser(t *testing.T) {
tests := []struct {
name string
Expand Down Expand Up @@ -140,9 +137,7 @@ func TestCreateParser(t *testing.T) {
}
}

// TestIntegration tüm sistemin entegrasyon testini gerçekleştirir
func TestIntegration(t *testing.T) {
// Test dosyası oluştur
testSQL := `
CREATE TABLE users (
id SERIAL PRIMARY KEY,
Expand All @@ -157,7 +152,6 @@ CREATE TABLE users (
t.Fatalf("Test dosyası oluşturulamadı: %v", err)
}

// Test senaryoları
tests := []struct {
name string
targetDB string
Expand All @@ -182,19 +176,16 @@ CREATE TABLE users (

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
// Test dosyasını oku
content, err := os.ReadFile(inputPath)
if err != nil {
t.Fatalf("Test dosyası okunamadı: %v", err)
}

// Kaynak tipi tespit et
sourceType := detectSourceType(string(content))
if sourceType != "postgres" {
t.Errorf("Beklenen kaynak tipi postgres, alınan %s", sourceType)
}

// Parser'ları oluştur
sourceParser := createParser(sourceType)
targetParser := createParser(tt.targetDB)

Expand All @@ -205,26 +196,22 @@ CREATE TABLE users (
return
}

// Parse et
schema, err := sourceParser.Parse(string(content))
if err != nil {
t.Fatalf("Parse işlemi başarısız: %v", err)
}

// Hedef SQL oluştur
result, err := targetParser.Generate(schema)
if err != nil {
t.Fatalf("SQL oluşturma başarısız: %v", err)
}

// Sonuç dosyasını oluştur
outputPath := createOutputPath(inputPath, tt.targetDB)
err = os.WriteFile(outputPath, []byte(result), 0644)
if err != nil {
t.Fatalf("Çıktı dosyası yazılamadı: %v", err)
}

// Sonuç dosyasının varlığını kontrol et
if _, err := os.Stat(outputPath); os.IsNotExist(err) {
t.Errorf("Çıktı dosyası oluşturulmadı: %s", outputPath)
}
Expand Down
10 changes: 5 additions & 5 deletions mysql/mysql_map.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package mysql

// MySQL'den diğer veritabanı tiplerine veri tipi dönüşüm haritaları
// Data type conversion maps from MySQL to other database types
var (
// MySQLToPostgreSQL MySQL'den PostgreSQL'e veri tipi dönüşümleri
// MySQLToPostgreSQL Data type conversions from MySQL to PostgreSQL
MySQLToPostgreSQL = map[string]string{
"tinyint": "smallint",
"smallint": "smallint",
Expand Down Expand Up @@ -33,7 +33,7 @@ var (
"boolean": "boolean",
}

// MySQLToSQLServer MySQL'den SQL Server'a veri tipi dönüşümleri
// MySQLToSQLServer Data type conversions from MySQL to SQL Server
MySQLToSQLServer = map[string]string{
"tinyint": "tinyint",
"smallint": "smallint",
Expand Down Expand Up @@ -64,7 +64,7 @@ var (
"boolean": "bit",
}

// MySQLToOracle MySQL'den Oracle'a veri tipi dönüşümleri
// MySQLToOracle Data type conversions from MySQL to Oracle
MySQLToOracle = map[string]string{
"tinyint": "NUMBER(3)",
"smallint": "NUMBER(5)",
Expand Down Expand Up @@ -95,7 +95,7 @@ var (
"boolean": "NUMBER(1)",
}

// MySQLToSQLite MySQL'den SQLite'a veri tipi dönüşümleri
// MySQLToSQLite Data type conversions from MySQL to SQLite
MySQLToSQLite = map[string]string{
"tinyint": "INTEGER",
"smallint": "INTEGER",
Expand Down
10 changes: 5 additions & 5 deletions oracle/oracle_map.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package oracle

// Oracle'dan diğer veritabanı tiplerine veri tipi dönüşüm haritaları
// Data type conversion maps from Oracle to other database types
var (
// OracleToMySQL Oracle'dan MySQL'e veri tipi dönüşümleri
// OracleToMySQL Data type conversions from Oracle to MySQL
OracleToMySQL = map[string]string{
"NUMBER": "decimal",
"NUMBER(1)": "boolean",
Expand Down Expand Up @@ -32,7 +32,7 @@ var (
"UROWID": "varchar(4000)",
}

// OracleToPostgreSQL Oracle'dan PostgreSQL'e veri tipi dönüşümleri
// OracleToPostgreSQL Data type conversions from Oracle to PostgreSQL
OracleToPostgreSQL = map[string]string{
"NUMBER": "numeric",
"NUMBER(1)": "boolean",
Expand Down Expand Up @@ -62,7 +62,7 @@ var (
"UROWID": "varchar(4000)",
}

// OracleToSQLServer Oracle'dan SQL Server'a veri tipi dönüşümleri
// OracleToSQLServer Data type conversions from Oracle to SQL Server
OracleToSQLServer = map[string]string{
"NUMBER": "decimal",
"NUMBER(1)": "bit",
Expand Down Expand Up @@ -92,7 +92,7 @@ var (
"UROWID": "varchar(4000)",
}

// OracleToSQLite Oracle'dan SQLite'a veri tipi dönüşümleri
// OracleToSQLite Data type conversions from Oracle to SQLite
OracleToSQLite = map[string]string{
"NUMBER": "REAL",
"NUMBER(1)": "INTEGER",
Expand Down
10 changes: 5 additions & 5 deletions postgres/postgres_map.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package postgres

// PostgreSQL'den diğer veritabanı tiplerine veri tipi dönüşüm haritaları
// Data type conversion maps from PostgreSQL to other database types
var (
// PostgreSQLToMySQL PostgreSQL'den MySQL'e veri tipi dönüşümleri
// PostgreSQLToMySQL Data type conversions from PostgreSQL to MySQL
PostgreSQLToMySQL = map[string]string{
"smallint": "smallint",
"integer": "int",
Expand Down Expand Up @@ -35,7 +35,7 @@ var (
"interval": "varchar(255)",
}

// PostgreSQLToSQLServer PostgreSQL'den SQL Server'a veri tipi dönüşümleri
// PostgreSQLToSQLServer Data type conversions from PostgreSQL to SQL Server
PostgreSQLToSQLServer = map[string]string{
"smallint": "smallint",
"integer": "int",
Expand Down Expand Up @@ -68,7 +68,7 @@ var (
"interval": "varchar(255)",
}

// PostgreSQLToOracle PostgreSQL'den Oracle'a veri tipi dönüşümleri
// PostgreSQLToOracle Data type conversions from PostgreSQL to Oracle
PostgreSQLToOracle = map[string]string{
"smallint": "NUMBER(5)",
"integer": "NUMBER(10)",
Expand Down Expand Up @@ -101,7 +101,7 @@ var (
"interval": "INTERVAL DAY TO SECOND",
}

// PostgreSQLToSQLite PostgreSQL'den SQLite'a veri tipi dönüşümleri
// PostgreSQLToSQLite Data type conversions from PostgreSQL to SQLite
PostgreSQLToSQLite = map[string]string{
"smallint": "INTEGER",
"integer": "INTEGER",
Expand Down
10 changes: 5 additions & 5 deletions sqlite/sqlite_map.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package sqlite

// SQLite'dan diğer veritabanı tiplerine veri tipi dönüşüm haritaları
// Data type conversion maps from SQLite to other database types
var (
// SQLiteToMySQL SQLite'dan MySQL'e veri tipi dönüşümleri
// SQLiteToMySQL Data type conversions from SQLite to MySQL
SQLiteToMySQL = map[string]string{
"INTEGER": "int",
"REAL": "double",
Expand All @@ -15,7 +15,7 @@ var (
"TIME": "time",
}

// SQLiteToPostgreSQL SQLite'dan PostgreSQL'e veri tipi dönüşümleri
// SQLiteToPostgreSQL Data type conversions from SQLite to PostgreSQL
SQLiteToPostgreSQL = map[string]string{
"INTEGER": "integer",
"REAL": "double precision",
Expand All @@ -28,7 +28,7 @@ var (
"TIME": "time",
}

// SQLiteToSQLServer SQLite'dan SQL Server'a veri tipi dönüşümleri
// SQLiteToSQLServer Data type conversions from SQLite to SQL Server
SQLiteToSQLServer = map[string]string{
"INTEGER": "int",
"REAL": "float",
Expand All @@ -41,7 +41,7 @@ var (
"TIME": "time",
}

// SQLiteToOracle SQLite'dan Oracle'a veri tipi dönüşümleri
// SQLiteToOracle Data type conversions from SQLite to Oracle
SQLiteToOracle = map[string]string{
"INTEGER": "NUMBER(10)",
"REAL": "BINARY_DOUBLE",
Expand Down
10 changes: 5 additions & 5 deletions sqlserver/sqlserver_map.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package sqlserver

// SQLServer'dan diğer veritabanı tiplerine veri tipi dönüşüm haritaları
// Data type conversion maps from SQL Server to other database types
var (
// SQLServerToMySQL SQLServer'dan MySQL'e veri tipi dönüşümleri
// SQLServerToMySQL Data type conversions from SQL Server to MySQL
SQLServerToMySQL = map[string]string{
"tinyint": "tinyint",
"smallint": "smallint",
Expand Down Expand Up @@ -36,7 +36,7 @@ var (
"sql_variant": "text",
}

// SQLServerToPostgreSQL SQLServer'dan PostgreSQL'e veri tipi dönüşümleri
// SQLServerToPostgreSQL Data type conversions from SQL Server to PostgreSQL
SQLServerToPostgreSQL = map[string]string{
"tinyint": "smallint",
"smallint": "smallint",
Expand Down Expand Up @@ -70,7 +70,7 @@ var (
"sql_variant": "text",
}

// SQLServerToOracle SQLServer'dan Oracle'a veri tipi dönüşümleri
// SQLServerToOracle Data type conversions from SQL Server to Oracle
SQLServerToOracle = map[string]string{
"tinyint": "NUMBER(3)",
"smallint": "NUMBER(5)",
Expand Down Expand Up @@ -104,7 +104,7 @@ var (
"sql_variant": "CLOB",
}

// SQLServerToSQLite SQLServer'dan SQLite'a veri tipi dönüşümleri
// SQLServerToSQLite Data type conversions from SQL Server to SQLite
SQLServerToSQLite = map[string]string{
"tinyint": "INTEGER",
"smallint": "INTEGER",
Expand Down

0 comments on commit 7b9bbbe

Please sign in to comment.