Implement stinky creation and gettage
This commit is contained in:
		
							
								
								
									
										58
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								main.go
									
									
									
									
									
								
							@@ -12,6 +12,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var Error *log.Logger
 | 
					var Error *log.Logger
 | 
				
			||||||
var Warning *log.Logger
 | 
					var Warning *log.Logger
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
	log.SetFlags(log.Lmicroseconds | log.Lshortfile)
 | 
						log.SetFlags(log.Lmicroseconds | log.Lshortfile)
 | 
				
			||||||
	logFile, err := os.Create("main.log")
 | 
						logFile, err := os.Create("main.log")
 | 
				
			||||||
@@ -31,6 +32,7 @@ func init() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var db DB
 | 
					var db DB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
	inputFile := flag.String("if", "input", "Input file")
 | 
						inputFile := flag.String("if", "input", "Input file")
 | 
				
			||||||
	flag.Parse()
 | 
						flag.Parse()
 | 
				
			||||||
@@ -56,7 +58,7 @@ func main() {
 | 
				
			|||||||
		Error.Printf("Failed parsing note: %v", err)
 | 
							Error.Printf("Failed parsing note: %v", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
					
 | 
				
			||||||
	err = SaveNote(note)
 | 
						err = SaveNote(note)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		Error.Printf("Failed saving note: %v", err)
 | 
							Error.Printf("Failed saving note: %v", err)
 | 
				
			||||||
@@ -94,16 +96,21 @@ func ParseNote(data string) (NoteData, error) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func SaveNote(data NoteData) error {
 | 
					func SaveNote(data NoteData) error {
 | 
				
			||||||
	log.Printf("%#v", data)
 | 
						guild, err := GetOrCreateGuildByName(data.Guild)
 | 
				
			||||||
	guild, err := GetGuildByName(data.Guild)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return fmt.Errorf("failed getting guild for %s: %v", data.Guild, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	log.Printf("%#v", guild)
 | 
					
 | 
				
			||||||
 | 
						stinky, err := GetOrCreateStinkyByName(data.Player, guild)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return fmt.Errorf("failed getting stinky for %s: %v", data.Player, err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func GetGuildByName(name string) (Guild, error) {
 | 
					func GetOrCreateGuildByName(name string) (Guild, error) {
 | 
				
			||||||
	var guild Guild
 | 
						var guild Guild
 | 
				
			||||||
	err := db.readConn.QueryRow("select id, name from guild where name = ?", name).Scan(&guild.ID, &guild.Name)
 | 
						err := db.readConn.QueryRow("select id, name from guild where name = ?", name).Scan(&guild.ID, &guild.Name)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -137,4 +144,41 @@ func GetGuildById(id int) (Guild, error) {
 | 
				
			|||||||
		log.Printf("Guild not found: %v", err)
 | 
							log.Printf("Guild not found: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return guild, nil
 | 
						return guild, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func GetOrCreateStinkyByName(name string, guild Guild) (Stinky, error) {
 | 
				
			||||||
 | 
						var stinky Stinky
 | 
				
			||||||
 | 
						err := db.readConn.QueryRow("select id, name, guild from stinky where name = ?", name).Scan(&stinky.ID, &stinky.Name, &stinky.Guild.ID)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Printf("Stinky not found: %v", err)
 | 
				
			||||||
 | 
							stinky, err = CreateStinky(name, Guild{})
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return stinky, fmt.Errorf("failed creating stinky: %v", err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return stinky, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func CreateStinky(name string, guild Guild) (Stinky, error) {
 | 
				
			||||||
 | 
						stinky := Stinky{}
 | 
				
			||||||
 | 
						res, err := db.writeConn.Exec("insert into stinky (name, guild) values (?, ?)", name, guild.ID)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return stinky, fmt.Errorf("failed to insert stinky: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						id, err := res.LastInsertId()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return stinky, fmt.Errorf("failed getting last insert id for %d: %v", id, err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return GetStinkyById(int(id))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func GetStinkyById(id int) (Stinky, error) {
 | 
				
			||||||
 | 
						stinky := Stinky{}
 | 
				
			||||||
 | 
						err := db.readConn.QueryRow("select id, name, guild from stinky where id = ?", id).Scan(&stinky.ID, &stinky.Name, &stinky.Guild.ID)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return stinky, fmt.Errorf("failed getting stinky for %d: %v", id, err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return stinky, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user