tink_sql icon indicating copy to clipboard operation
tink_sql copied to clipboard

Id<T> fails to cast to Int in haxe 4.2.2

Open serjek opened this issue 4 years ago • 2 comments

Example below compiles just fine (apart from deprecation warnings) in haxe 4.1.5 but fails to compile in 4.2.2 with following error:

src/MainMinimal.hx:38: lines 38-43 : error: tink.sql.Id<Room> should be Int
src/MainMinimal.hx:38: lines 38-43 : ... have: tink.Promise<Array<{ id: tink.sql.Id<...> }>>
src/MainMinimal.hx:38: lines 38-43 : ... want: tink.Promise<Array<{ id: Int }>>

Minimal example:

package;
import tink.sql.drivers.MySql;
import tink.sql.Types;
using tink.CoreApi;

typedef User = {
	@:primary @:autoIncrement @:optional final id:Id<User>;
}

typedef Room = {
	@:primary @:autoIncrement @:optional final id:Id<Room>;
	final user:Id<User>;
}

typedef MyData = {
	final user:Int;
	final id:Int;
}

@:tables(User,Room)
class Db extends tink.sql.Database {}

class MainMinimal {

	public static function main() new MainMinimal();

	var db:Db;
	public function new() {
		var driver:MySql = new MySql({
			user: 'root',
			password: '',
			host: '127.0.0.1',
			port: 3306
		});
		db = new Db('test', driver);

		test().eager();
	}

	public function test():Promise<Array<MyData>>
		return db.Room.select({
				id: Room.id,
				user: Room.user
			})
			.where(Room.id > 10)
			.all();
}
-cp src
-main MainMinimal
-dce full

-lib hxnodejs
-lib tink_sql

-js minimal.js

serjek avatar Aug 26 '21 17:08 serjek

Can you try adding from Int to Id?

kevinresol avatar Aug 27 '21 13:08 kevinresol

It didn't help, as welll as adding @:transitive to Id

serjek avatar Aug 27 '21 16:08 serjek