package repositories import ( "log" "math/rand" "time" ) var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") func randSeq(n int) string { b := make([]rune, n) for i := range b { b[i] = letters[rand.Intn(len(letters))] } return string(b) } func getFile(id, postId int, name string) File { return File{ ID: id, PostID: postId, Name: name, Ext: "image/jpeg", Size: 10000, CreatedAt: time.Now(), } } // Creates post mock with mock files in it // // id - post ID, pid - parent post ID. func getPost(id int, pid *int) Post { var parentID int if pid == nil { parentID = 0 } else { parentID = *pid } var isParent bool if parentID == 0 { isParent = true } else { isParent = false } return Post{ ID: id, IsParent: isParent, ParentID: &parentID, IsDeleted: false, Title: randSeq(rand.Intn(100)), Text: randSeq(rand.Intn(100)), IsSage: false, // Maybe somewhen else I'll add url field for files // Files: []File{ // getFile(2, id, "https://memepedia.ru/wp-content/uploads/2018/03/ebanyy-rot-etogo-kazino.png"), // getFile(1, id, "https://memepedia.ru/wp-content/uploads/2018/03/ebanyy-rot-etogo-kazino.png"), // }, Files: []File{}, CreatedAt: time.Now(), UpdatedAt: time.Now(), } } func seedDb() { // preparing seed data with parent posts with files var parentPosts []Post for i := 1; i < 10; i++ { post := getPost(i, nil) parentPosts = append(parentPosts, post) } for _, parentPost := range parentPosts { // saving parent post in db parentPostID, err := Posts.Create(parentPost) if err != nil { log.Panicln(err) } // saving parent post files for _, file := range parentPost.Files { file.PostID = parentPostID err = Files.Create(file) if err != nil { log.Panicln(err) } } // making child posts for i := 0; i < 10; i++ { // getting child post with files childPost := getPost(0, &parentPostID) childPostID, err := Posts.Create(childPost) if err != nil { log.Panicln(err) } // saving child post files for _, file := range childPost.Files { file.PostID = childPostID err = Files.Create(file) if err != nil { log.Panicln(err) } } } } } func Seed() { seedDb() log.Println("mocks - online") }