rentziass/misty

Refactoring

Opened this issue · 0 comments

m1ome commented

Currently library looks pretty messy, in e.g.

func main() {
	f, err := os.Open("dump.sql")
	if err != nil {
		panic(err)
	}

	target := &misty.Target{
		TableName: "public.users",
		Columns: []*misty.TargetColumn{
			{
				Name:  "username",
				Value: obfuscateHandle,
			},
			{
				Name:  "email",
				Value: obfuscateEmail,
			},
		},
	}

	err = misty.Obfuscate(f, os.Stdout, []*misty.Target{target})
	if err != nil {
		log.Println(err)
	}

}

func obfuscateHandle(_ []byte) []byte {
	return []byte(fake.UserName())
}

func obfuscateEmail(_ []byte) []byte {
	return []byte(fake.EmailAddress())
}

I think more cleaner way will be

func main() {
	f, err := os.Open("dump.sql")
	if err != nil {
		panic(err)
	}

    target1 := misty.NewTarget("public.admins")
    target2.AddRule("username", obfuscateHandle)
    target2.AddRule("email", obfuscateEmail)

    target2 := misty.NewTarget("public.users")
    target2.AddRule("username", obfuscateHandle)
    target2.AddRule("email", obfuscateEmail)
    
    if err := misty.Obfuscate(Options{
        Source: f,
        Output: os.Stdout,
    }, target1, target2); err != nil {
		log.Println(err)
	}
}

func obfuscateHandle(_ []byte) []byte {
	return []byte(fake.UserName())
}

func obfuscateEmail(_ []byte) []byte {
	return []byte(fake.EmailAddress())
}

Cleaner i think.