Dev: add column plain to indicat if paste is plain
This commit is contained in:
		
							parent
							
								
									949ec07e8b
								
							
						
					
					
						commit
						c526fa7862
					
				|  | @ -39,11 +39,15 @@ func initDatabase(db *sql.DB) error { | ||||||
|         create table if not exists paste ( |         create table if not exists paste ( | ||||||
|             id text unique, |             id text unique, | ||||||
|             content blob, |             content blob, | ||||||
|  |             plain integer, | ||||||
|             expire integer |             expire integer | ||||||
|         ); |         ); | ||||||
| 
 | 
 | ||||||
|         create index if not exists paste_id |         create index if not exists paste_id | ||||||
|             on paste ( id ); |             on paste ( id ); | ||||||
|  | 
 | ||||||
|  |         create index if not exists paste_expire | ||||||
|  |             on paste ( expire ); | ||||||
|     ` |     ` | ||||||
| 
 | 
 | ||||||
|     if _, err := db.Exec(sqlStmt); err != nil { |     if _, err := db.Exec(sqlStmt); err != nil { | ||||||
|  | @ -58,17 +62,22 @@ func (s *StorageSqlite) Close() error { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (s *StorageSqlite) Save(p *storage.Paste) (string, error) { | func (s *StorageSqlite) Save(p *storage.Paste) (string, error) { | ||||||
|     stmt, err := s.db.Prepare(`insert into paste (id, content, expire) values (?, ?, ?);`) |     stmt, err := s.db.Prepare(`insert into paste (id, content, plain, expire) values (?, ?, ?, ?);`) | ||||||
|     if err != nil { |     if err != nil { | ||||||
|         return "", err |         return "", err | ||||||
|     } |     } | ||||||
|     defer stmt.Close() |     defer stmt.Close() | ||||||
| 
 | 
 | ||||||
|     var id string |     var id string | ||||||
|  |     var plain = 0 | ||||||
|  | 
 | ||||||
|  |     if p.Plain { | ||||||
|  |         plain = 1 | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     for true { |     for true { | ||||||
|         id = utils.GenerateId(s.idLength) |         id = utils.GenerateId(s.idLength) | ||||||
|         _, err = stmt.Exec(id, p.Content, p.Expire) |         _, err = stmt.Exec(id, p.Content, plain, p.Expire) | ||||||
|         if err == nil { |         if err == nil { | ||||||
|             break |             break | ||||||
|         } else if errors.Is(err, sqlite3.ErrConstraint) { |         } else if errors.Is(err, sqlite3.ErrConstraint) { | ||||||
|  | @ -82,7 +91,7 @@ func (s *StorageSqlite) Save(p *storage.Paste) (string, error) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (s *StorageSqlite) Get(id string) (*storage.Paste, error) { | func (s *StorageSqlite) Get(id string) (*storage.Paste, error) { | ||||||
|     stmt, err := s.db.Prepare(`select content, expire from paste where id = ?`) |     stmt, err := s.db.Prepare(`select content, plain, expire from paste where id = ?`) | ||||||
|     if err != nil { |     if err != nil { | ||||||
|         return nil, err |         return nil, err | ||||||
|     } |     } | ||||||
|  | @ -91,13 +100,19 @@ func (s *StorageSqlite) Get(id string) (*storage.Paste, error) { | ||||||
|     var p storage.Paste |     var p storage.Paste | ||||||
| 
 | 
 | ||||||
|     if !rows.Next() { |     if !rows.Next() { | ||||||
|         return nil, errors.New("No such paste") |         return nil, nil | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if err = rows.Scan(&p.Content, &p.Expire); err != nil { |     var plain = 0 | ||||||
|  | 
 | ||||||
|  |     if err = rows.Scan(&p.Content, &plain, &p.Expire); err != nil { | ||||||
|         return nil, err |         return nil, err | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     if plain != 0 { | ||||||
|  |         p.Plain = true | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     return &p, nil |     return &p, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -35,10 +35,12 @@ func TestSqlite(t * testing.T) { | ||||||
| func testGetSave(s *sqlite.StorageSqlite, t * testing.T) { | func testGetSave(s *sqlite.StorageSqlite, t * testing.T) { | ||||||
|     var a = storage.Paste { |     var a = storage.Paste { | ||||||
|         Content: []byte("abc"), |         Content: []byte("abc"), | ||||||
|  |         Plain: true, | ||||||
|         Expire:  time.Now().UnixMilli() + 15 * 1000, |         Expire:  time.Now().UnixMilli() + 15 * 1000, | ||||||
|     } |     } | ||||||
|     var b = storage.Paste { |     var b = storage.Paste { | ||||||
|         Content: []byte("def"), |         Content: []byte("def"), | ||||||
|  |         Plain: true, | ||||||
|         Expire:  time.Now().UnixMilli() - 15 * 1000, |         Expire:  time.Now().UnixMilli() - 15 * 1000, | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ type Storage interface { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| type Paste struct { | type Paste struct { | ||||||
|  |     Plain       bool | ||||||
|     Content     []byte |     Content     []byte | ||||||
|     Expire      int64 |     Expire      int64 | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 leafee98
						leafee98