diff options
| author | Dmitry Ilvokhin <d@ilvokhin.com> | 2025-03-09 12:27:09 +0000 | 
|---|---|---|
| committer | Dmitry Ilvokhin <d@ilvokhin.com> | 2025-03-09 12:27:09 +0000 | 
| commit | bf15c1bf65c0a340e38b953b4964aaf8beeb25c4 (patch) | |
| tree | 2a2ad4f3d4855662abd5cc91a7b0711a3ea53f2b | |
| parent | cf505d7ea6e3ef1e42613d3a7ed11ab10c737b24 (diff) | |
| download | flatbot-bf15c1bf65c0a340e38b953b4964aaf8beeb25c4.tar.gz flatbot-bf15c1bf65c0a340e38b953b4964aaf8beeb25c4.tar.bz2 flatbot-bf15c1bf65c0a340e38b953b4964aaf8beeb25c4.zip | |
Trim state file to prevent unbounded grow
| -rw-r--r-- | flatbot.go | 18 | 
1 files changed, 10 insertions, 8 deletions
| @@ -76,27 +76,29 @@ func loopOnce() error {  	if err != nil {  		return err  	} +	fetched := make([]flat, 0)  	for _, url := range flag.Args() { -		sent, err = doOneURL(url, sent) +		sent, fetched, err = doOneURL(url, sent, fetched)  		if err != nil {  			log.Print(err)  			continue  		}  	} -	// TODO: trim sent file here? +	sent = removeDelisted(sent, fetched)  	return writeSent(sent, *state)  } -func doOneURL(url string, sent []flat) ([]flat, error) { +func doOneURL(url string, sent, fetched []flat) ([]flat, []flat, error) {  	body, err := fetch(url)  	if err != nil { -		return sent, err +		return sent, fetched, err  	} -	fetched, err := parse(body) +	parsed, err := parse(body)  	if err != nil { -		return sent, err +		return sent, fetched, err  	} -	newFlats := removeAlreadySent(fetched, sent) +	fetched = append(fetched, parsed...) +	newFlats := removeAlreadySent(parsed, sent)  	m := messenger{  		Token:  *apiToken,  		ChatID: *chatID, @@ -113,7 +115,7 @@ func doOneURL(url string, sent []flat) ([]flat, error) {  			f.Price, f.URL())  		sent = append(sent, f)  	} -	return sent, nil +	return sent, fetched, nil  }  func fetch(url string) ([]byte, error) { |