Я только начал новый проект и хотел сначала использовать HaskellDB. Я создал базу данных с 2 столбцами:
create table sensor (
service text,
name text
);
.. узнал, как сделать основной механизм HaskellDB (ооо ... документация) и хотел сделать вставку. Тем не менее, я хотел сделать частичную вставку (там должно быть больше столбцов), что-то вроде:
insert into sensor (service) values ('myservice');
Переведено на HaskellDB:
transaction db $ insert db SE.sensor (SE.service <<- (Just $ senService sensor))
Но ... это просто не работает. Что также не работает, так это если я указываю имена столбцов в другом порядке, что также не совсем удобно. Есть ли способ сделать частичную вставку в haskelldb?
Коды ошибок, которые я получаю, - когда я просто вставляю другой столбец («имя») в качестве первого:
Couldn't match expected type `SEI.Service'
against inferred type `SEI.Name'
Expected type: SEI.Intsensor
Inferred type: Database.HaskellDB.HDBRec.RecCons
SEI.Name (Expr String) er
When using functional dependencies to combine
Database.HaskellDB.Query.InsertRec
(Database.HaskellDB.HDBRec.RecCons f (e a) r)
(Database.HaskellDB.HDBRec.RecCons f (Expr a) er),
etc..
И когда я делаю «сервис» 'в качестве первого и единственного поля я получаю:
Couldn't match expected type `Database.HaskellDB.HDBRec.RecCons
SEI.Name
(Expr String)
(Database.HaskellDB.HDBRec.RecCons
SEI.Time
(Expr Int)
(Database.HaskellDB.HDBRec.RecCons
SEI.Intval (Expr Int) Database.HaskellDB.HDBRec.RecNil))'
against inferred type `Database.HaskellDB.HDBRec.RecNil'
(у меня есть пара других столбцов в таблице) This looks really like 'by design', unfortunately :(