orm: fix time struct in sql stmt (#12298)
							parent
							
								
									5e4594a121
								
							
						
					
					
						commit
						d33f7d12f7
					
				| 
						 | 
				
			
			@ -5,11 +5,12 @@ import time
 | 
			
		|||
import sqlite
 | 
			
		||||
 | 
			
		||||
struct Module {
 | 
			
		||||
	id           int    [primary; sql: serial]
 | 
			
		||||
	id           int       [primary; sql: serial]
 | 
			
		||||
	name         string
 | 
			
		||||
	nr_downloads int
 | 
			
		||||
	test_id      u64
 | 
			
		||||
	user         User
 | 
			
		||||
	created      time.Time
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[table: 'userlist']
 | 
			
		||||
| 
						 | 
				
			
			@ -330,4 +331,16 @@ fn test_orm_sqlite() {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	assert test_id_mod.test_id == 11
 | 
			
		||||
 | 
			
		||||
	t := time.now()
 | 
			
		||||
	sql db {
 | 
			
		||||
		update Module set created = t where id == 1
 | 
			
		||||
	}
 | 
			
		||||
	updated_time_mod := sql db {
 | 
			
		||||
		select from Module where id == 1
 | 
			
		||||
	}
 | 
			
		||||
	// NB: usually updated_time_mod.created != t, because t has
 | 
			
		||||
	// its microseconds set, while the value retrieved from the DB
 | 
			
		||||
	// has them zeroed, because the db field resolution is seconds.
 | 
			
		||||
	assert updated_time_mod.created.format_ss() == t.format_ss()
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7893,7 +7893,7 @@ fn (mut c Checker) fetch_field_name(field ast.StructField) string {
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
	sym := c.table.get_type_symbol(field.typ)
 | 
			
		||||
	if sym.kind == .struct_ {
 | 
			
		||||
	if sym.kind == .struct_ && sym.name != 'time.Time' {
 | 
			
		||||
		name = '${name}_id'
 | 
			
		||||
	}
 | 
			
		||||
	return name
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue